问答题
设变量h放在寄存器r2,数组A的基值放在寄存器r3,请将下面C语句翻译成ARM汇编语言代码。C赋值语句是;A[12]=h+A[8]
【正确答案】正确答案:虽然C语句只有一个相加的操作,但是两个操作数均在存储器中,因此需要更多的ARM指令。首先用取字(LDR)指令访问存储器单元A[8];然后用ADD指令将h+A[8]放在寄存器r6,最后用存字(STR)指令将r6中的结果写到存储器单元A[12],此时寄存器r3作为基地址寄存器,位移量为48(4×12),因ARM也是字节寻址。3条ARM汇编语言指令形式如下: LDR r6,[r3,#32];读出A[8]单元数据到r6寄存器 ADD r6,r2,r6;寄存器r6中保存数据h+A[8] STR r6,[r3,#48];数据h+A[8]写回到A[12]单元
【答案解析】