重複の可能性:
LEA命令の目的は何ですか?
アドレスの値が必要な場合は、実効アドレスを使用できますpush dword [str+4]
。しかし、アドレスを参照する必要がある場合は、使用できませんpush dword str+4
(これは、私にとっては明白で直感的な方法です)。
代わりに、を使用する必要がありlea EAX, [str+4]
ますpush EAX
。これは少し紛らわしく、「ゼロクロック」命令ではありますが、追加のプロセッサ命令も提供します。(この回答を参照してください)
この違いについてハードウェアレベルの説明はありますか、それとも(NASM)アセンブリ構文の癖ですか?
編集: さて、このコメントは私と同じ質問をします。そして、このコメントでは、Luceroの回答と同じように回答されています。X86はそのようなアドレス指定をサポートしていません。