1

我正在查看一些编译器生成的汇编代码(x86_64),发现很少有零位移的指令,如下所示。

     movzbl 0x0(%rbp),%eax

这种 0x0 位移背后的原因可能是什么?(我是汇编新手,如果它已经是一个讨论过的问题,请指向我的链接。)据我了解,上述指令将零扩展 rbp+(0x0) 复制到 eax


编辑:我找到了一个链接,虽然 what-does-0x0-indicate-in-the-instruction解释了它

谢谢..!

4

1 回答 1

4

这意味着movzx eax, byte [rbp + 0]

中包含的地址处的内存操作数没有编码(e|r)bp,但是对于(e|r)bp + constant. 因此,该常量为 0 以从rbp.

于 2012-09-23T10:25:55.033 回答