我正在运行一些汇编代码,但我无法弄清楚一行代码的作用。代码是:
leaq 0(,%rax,4), %rdx
我知道lea
基本上是一种mov
指令,但它只移动地址。所以我们将某物的地址移动到%rdx
(使%rdx
“指向”堆栈上的某物)。我知道%rax
堆栈上的指向(例如-28(%rbp)
),但我很困惑如何将它与 4 相乘来得到我的答案。会%rdx
指向4*(-28) = -112(%rbp)
?
谢谢!
编辑:对于上下文,以下代码在此指令之前:
pushq %rbp
movq %rsp, %rbp
movl %esi, -28(%rbp)
movl -28(%rbp), %eax
cltq
leaq 0(,%rax,4), %rdx