メモリアドレスを保持する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 の下半分を使用できないのか疑問に思っています。また、レジスタの下位部分の適切な使用に関する情報を含むリンク/参照があれば、それもありがたいです。
どうもありがとうございました。