このx86アセンブリコードを考えてみましょう。ここで起こっている正確に何のx86アセンブリにラベルを間接参照
section .data
foo:
mov ebx, [boo]
mov [goo], ebx
goo:
mov eax, 2
mov eax, 3
ret
boo:
mov eax, 4
mov eax, 5
ret
を? [boo]
とmov
を逆参照すると、それは[goo]
に正確に移動していますか?ちょうど1つのコマンド? ret
も同様ですか?
フォローアップの質問:
- は、ラベルが私にアドレスを与える逆参照していますか?または、ラベルの最初のコマンドのマシンコード?
- マシンコードの場合、どうすれば1つ以上のコマンドになる可能性がありますか?すべてのコマンドが本質的に32ビット(すべてのビットが使用されていない場合でも)ではありませんか?
- ボトムライン -
eax
の最後に3または5の値がありますか?
をクリアするためのおかげでした最後のバイトは常に0になります。mov、eax 0xC000000 – Michael
のようなものを試すと、このコードは失敗します。 "4バイトをフェッチする"は私が探していたものでした。ありがとう! –