1. ホーム
  2. assembly

[解決済み] x86アセンブリでレジスタに使用されるpush/pop命令の機能は何ですか?

2022-03-05 08:20:33

質問

アセンブラについて読んでいると、よく次のようなことを書いている人を見かけます。 押す プロセッサのあるレジスタと ポップ を、後で再び元の状態に戻すことができます。

  • レジスタのプッシュはどのように行うのですか?どこでプッシュされるのでしょうか?なぜこれが必要なのですか?
  • これは1つのプロセッサ命令に集約されるのでしょうか、それとももっと複雑なのでしょうか?

どのように解決するのか?

プッシュ は、値をスタックに書き込むことを意味します(レジスタに格納されているとは限りません)。

ポッピング は、スタックの一番上にあるものを復元することを意味します。 への レジスタです。以上が基本的な命令です。

push 0xdeadbeef      ; push a value to the stack
pop eax              ; eax is now 0xdeadbeef

; swap contents of registers
push eax
mov eax, ebx
pop ebx