我试图通过取消引用前两个寄存器,然后将结果存储在第三个寄存器中,在 ARM Assembly 中将两个寄存器添加在一起。
目前我有3个变量和一个函数,如下所示;
extern void my_function(int* x, int* y, int* total);
int main(void){
int x = 1; //R0
int y = 2; //R1
int total = 0; //R2
while(1){
my_function(&x, &y, &total);
printf("\x1b[5;5HTotal = %d, total");
}
}
这个函数执行以下操作
对于前两个寄存器,我试图取消引用它们,将它们加在一起并将结果存储在第三个寄存器中。这是我的汇编代码;
ldr r4, [r0] @ Dereference r0, and store the address in R4
ldr r4, [r1] @ Dereference r1, and store the address in R4
add r2, r0, r1 @ Add r0 & r1 together, and store in R2
str r4, [r2] @ Store r2 address in r4
当我打印出来时,答案是 0。我的问题是,当我在汇编中执行前两行时,是否ldr r4, [r0]
被替换ldr r4, [r1]
为导致输出为 0 的?他们每个人都需要存储在自己的寄存器中吗?或者我只是基本上打印出总数(r2)?