这两个组装命令会导致相同的机器动作吗?如果没有,有什么区别?
// X6 is the base address of an integer array, X10 is a temporary register
ADD X10, X6, XZR
LDUR X10, [X6, #0]
答案 0 :(得分:1)
第一个是add,X10=X6+0
(或者在这种情况下有效地是一个寄存器副本),第二个是来自内存的加载,使用X6作为一个零的输入指针(所以你的index [0]数组值) )。
在ARM中,对通用寄存器中的值执行算术运算(使用相同的寄存器组来保存结果),对存储器的访问使用一个(或多个)通用寄存器来保存数据,另一个通用目的登记为指针。
这称为加载/存储架构。如果您对不同类型的体系结构更熟悉,那么指令集可能会让您感到困惑。