Rev. 1.50, 10/04, page 274 of 448
MOVWL4(long m, long d) /* MOV.W @(disp,Rm),R0 */
{
long disp;
disp = (0x0000000F & (long)d);
R[0] = Read_Word(R[m]+(disp<<1));
if ((R[0]&0x8000)==0) R[0] &= 0x0000FFFF;
else R[0] |= 0xFFFF0000;
PC += 2;
}
MOVLL4(long m, long d, long n) /* MOV.L @(disp,Rm),Rn */
{
long disp;
disp = (0x0000000F & (long)d);
R[n] = Read_Long(R[m]+(disp<<2));
PC += 2;
}
Example:
MOV.L @(2*,R0),R1 ;Before execution (R0+8) = H'12345670
;After execution R1 = H'12345670
MOV.L R0,@(H'F,R1) ;Before execution R0 = H'FFFF7F80
;After execution (R1+60) = H'FFFF7F80
Note: * The assembler of Renesas Technology uses the value after scaling (×1, ×2, or ×4) as
the displacement (disp).
Possible Exceptions:
• Data TLB multiple-hit exception
• Slot illegal instruction exception
• Data TLB miss exception
• Data TLB protection violation exception
• Data address error
• Initial page write exception (only write operation)