提问人:Zayed Aldhaheri 提问时间:11/15/2023 最后编辑:Peter CordesZayed Aldhaheri 更新时间:11/15/2023 访问量:70
汇编代码“lea”指令输入。Lea (,reg1,reg2) [重复]
Assembly code "lea" instruction inputs. lea (,reg1,reg2) [duplicate]
问:
这个问题在这里已经有答案了:
CS:APP示例使用带有两个操作数的idivq? (3 个答案)
关于 [base + index*scale + disp] 和 AT&T disp(base, index, scale) 的几个问题( 1 个答案)
对不是地址/指针的值使用 LEA? (4 个答案)
为什么括号会根据AT&T语法中的上下文做不同的事情? (2 个答案)
8天前关闭。
lea 指令有一些让我感到困惑的情况。 例如,“leaq (,%rsi, %rdi), %rdx”,我认为它的意思是“rdx = rdi * rsi”。 从公式中,我得到的是“lea D(Rb,Ri,S) = D + Rb + S*Ri”。在本例中,Rb 为 null,Ri 为 rsi,S 为 rdi。
我相信“leaq (,%rsi, %rdi), %rdx”的答案是以下选项之一: “rdx = rsi + rdi” 或 “RDX = RSI * RDI”。
我从教授的讲座中了解到,lea 最多可以有 3 个论点。我们将寄存器相加,如果有一个刻度(在最后一个参数处),我们将其乘以最后一个寄存器参数。我只需要澄清一下。
TL;博士 “Leaq (,%RSI,%RDI), %RDX” 算术是什么意思?
答: 暂无答案
评论
leaq (, %rsi, %rdi), %rdx
是语法错误。第三个成员必须是 1、2、4 或 8 之一。也可以省略它,其行为就像是 1 一样。S
(reg1, S)
(reg1, , S)