创建指向数组中位置的指针

时间:2019-02-10 19:34:38

标签: pointers assembly memory

我是汇编的初学者,所以如果我忘记了重要信息,请告诉我。我的任务是处理内存,我对从内存位置获取地址与在所述位置获取值有些困惑。

具体来说,我有一个整数数组。我想有一个指向第一个项目的寄存器,一个指向最后一个项目的寄存器。我将指针指向寄存器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中。这是获取和存储地址的正确方法,还是我错过了一些东西?

1 个答案:

答案 0 :(得分:1)

您的前四个语句正确地将数组中最后一项的地址放入r3。

最后两个语句将最后一项的 value 加载到r2中,并将第一项的 value 加载到r1中。