我是汇编的初学者,所以如果我忘记了重要信息,请告诉我。我的任务是处理内存,我对从内存位置获取地址与在所述位置获取值有些困惑。
具体来说,我有一个整数数组。我想有一个指向第一个项目的寄存器,一个指向最后一个项目的寄存器。我将指针指向寄存器0中的第一项r0,并将项数设为r1。
@ Given values:
@ r0 - pointer to first item in array
@ r1 - number of items in array
mov r3, r1 @ r3 = (r1)
lsl r3, #2 @ r3 = (r1*4)
sub r3, r3, #4 @ r3 = (r1*4)-4
add r3, r0, r3 @ r3 = r0+(r1*4-4)
ldr r2, [r3] @ r2 points to last item
ldr r1, [r0] @ r1 points to first item
鉴于这两个,我可以得到最后一个带有(r0 + r1 * 4-4)的项目,对吗?使用该值,我试图将最后一项的地址移到下面的r2中。这是获取和存储地址的正确方法,还是我错过了一些东西?
答案 0 :(得分:1)
您的前四个语句正确地将数组中最后一项的地址放入r3。
最后两个语句将最后一项的 value 加载到r2中,并将第一项的 value 加载到r1中。