次のコードを見てください:
(ebp-0x8 -> int)
(ebp-0x4 -> int*)
=> 0x80483f3 <main+6>: mov DWORD PTR [ebp-0x8],0x0
0x80483fa <main+13>: mov DWORD PTR [ebp-0x4],0x0
0x8048401 <main+20>: mov DWORD PTR [ebp-0x8],0xa
0x8048408 <main+27>: lea eax,[ebp-0x8]
0x804840b <main+30>: mov DWORD PTR [ebp-0x4],eax
0x804840e <main+33>: mov eax,0x0
0x8048413 <main+38>: leave
0x8048414 <main+39>: ret
LEA コマンドは本当に必要ですか? 左の間違ったアドレスに関係なく、次の式が間違っていて無効であることは知っていますが、このようにする同様の方法はありませんか?
=> 0x80483f3 <main+6>: mov DWORD PTR [ebp-0x8],0x0
0x80483fa <main+13>: mov DWORD PTR [ebp-0x4],0x0
0x8048401 <main+20>: mov DWORD PTR [ebp-0x8],0xa
0x804840b <main+30>: mov DWORD PTR [ebp-0x4],ebp-0x8
0x804840e <main+33>: mov eax,0x0
0x8048413 <main+38>: leave
0x8048414 <main+39>: ret
無理だとは思いますが、確認したかったのです。
最後の質問ですが、この式ebp-0x8
は理論的には「レジスタの内容ebp
から差し引いた値0x8
」を返します。したがって、この式[ebp-0x8]
は、アドレス"レジスタの内容から"をebp
引い0x8
た値のメモリの内容を返します。ここで、メモリ内のいくつかのバイトの内容のみを取得する場合、LEA コマンドがメモリ アドレスを取得する方法を知りたいと思っています。
ばかげた質問で申し訳ありませんが、[ ]は非常に紛らわしい場合があります。