Rev. 1.50, 10/04, page 271 of 448
MOVWSG(int d) /* MOV.W R0,@(disp,GBR) */
{
unsigned int disp;
disp = (unsigned int)(0x000000FF & d);
Write_Word(GBR+(disp<<1),R[0]);
PC += 2;
}
MOVLSG(int d) /* MOV.L R0,@(disp,GBR) */
{
unsigned int disp;
disp = (unsigned int)(0x000000FF & (long)d);
Write_Long(GBR+(disp<<2),R[0]);
PC += 2;
}
Example:
MOV.L @(2*,GBR),R0 ;Before execution (GBR+8) = H'12345670
;After execution R0 = H'12345670
MOV.B R0,@(1*,GBR) ;Before execution R0 = H'FFFF7F80
;After execution (GBR+1) = H'80
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)