global _start
/*
int *p === > buf;
p === 首元素的地址; buf
q === 最后一个元素的地址;buf+8*4
while(p < q) {
a = *p
b = *q;
*p = b;
*q = a;
p++;
q--;
}
*/
_start:
ldr r0, =buf; @ 将数组的首元素地址赋值给r0
add r1, r0, #32 @ 得到数组最后一个元素的地址存储到r1中
loop:
ldr r2, [r0] @ 将r0寄存器所存储的地址空间的值赋值给寄存器r2
ldr r3, [r1] @ 将r1寄存器所存储的地址空间的值赋值给寄存器r3
str r2, [r1] @ 将寄存器r2的值写入到r1寄存器所存储的地址空间当中
str r3, [r0] @ 将寄存器r3的值写入到r0寄存器所存储的地址空间当中
add r0, #4 @ 将 r0数据(地址)加4;
sub r1, #4 @ 将 r1数据(地址)减4;
cmp r0, r1 @ 比较r0和r1的值,会修改cpsr的值。
blt loop @ 当r0的值小于r1的值,跳转到loop,否则退出循环。
nop
nop
buf:
.word 1,2,3,4,5,6,7,8,9