【发布时间】:2012-05-02 15:31:10
【问题描述】:
我有一个 64 位寄存器,其中包含一个内存地址。如果我对寄存器的下半部分执行算术运算,然后尝试取消引用它,则会出现分段错误。这是一个例子:
movsx rax, BYTE PTR [rdi] # ok
add edi, 1 # the address is correct but....
movsx rax, BYTE PTR [rdi] # segmentation fault here
如果我在第 2 行中将 edi 更改为 rdi 它可以工作,所以我只是想知道为什么在这种情况下我不能使用 rdi 的下半部分。如果有人提供有关正确使用寄存器下部的信息的任何链接/参考,我也将不胜感激。
非常感谢您的帮助。
【问题讨论】: