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