- (2)
Translate the
statement:
store
the LHS (r0)
in B[k]:
int A[10];
short B[20];
char k;
int main( )
{
B[k] = A[4] + 7;
}
|
Assembler code:
.text // Get A[4] (in r0)
movw r0, #:lower16:A movw r2, #:lower16:k
movt r0, #:upper16:A movt r2, #:upper16:k
ldr r0, [r0, #16] ldrsb r2, [r2] // r2 = k
add r2, r2, r2 // r2 = 2k
mov r1, #7 // = offset of B[k]
add r0, r0, r1 strh r0, [r1, r2]
movw r1, #:lower16:B
movt r1, #:upper16:B // r1 = base addr of B[k]
|
|