導入
スタックは、メモリの一部を「積み上げ式(後入れ先出し・LIFO)」で使う領域です。トランプを積んで、上から取るイメージ。rsp(スタックポインタ)が常に「積み上げた一番上」を指しています。
説明
push rax ; rax の値をスタックの上に積む(rsp が 8 減る)
push rbx ; rbx も積む
pop rcx ; 一番上を降ろして rcx へ(さっきの rbx の値)
pop rdx ; 次を降ろして rdx へ(rax の値)
push… 値をスタックに積む。x86-64 ではrspが 8 バイト減り(スタックは下に伸びる)、そこに値を書きます。pop… 一番上の値を取り出してレジスタへ。rspは 8 バイト増えます。- 後入れ先出しなので、
rax→rbxの順で積むと、取り出しはrbx→raxの逆順になります。
スタックは「レジスタが足りないときの一時退避場所」としても使われます。大事な値を push して退避し、あとで pop で戻します。