我有一个64位寄存器,它保存一个存储器地址.如果我对寄存器的下半部分执行算术运算然后尝试取消引用它,我会得到一个分段错误.这是一个例子:
movsx rax, BYTE PTR [rdi] # ok
add edi, 1 # the address is correct but....
movsx rax, BYTE PTR [rdi] # segmentation fault here
Run Code Online (Sandbox Code Playgroud)
如果我在第2行将edi更改为rdi,那么我只是想知道为什么在这种情况下我不能使用rdi的下半部分.如果任何人有任何关于正确使用寄存器下部的信息的链接/参考,我也将不胜感激.
非常感谢你的帮助.