我有一个保存内存地址的 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 的下半部分。如果有人有任何关于正确使用寄存器下部的信息的链接/参考资料,我也将不胜感激。
非常感谢你的帮助。