putchar、pushと を少しいじっていましたpop。の値をプッシュしrcxて何かを実行し、呼び出しputcharて rcx に戻そうとしたところ、 の値rcxが 0 に変更されていることがわかりました。コードの最初のビットと同様です。
比較のために、コードの 2 番目のビットを作成しました。ここでは、 をプッシュrcxし、そうではないことを行い、それをputcharに戻しますがrcx、rcxプッシュされた値のままです。
mov rcx, 123
push rcx
inc rcx
call [putchar]
pop rcx
call [putchar]
mov rcx, 123
push rcx
inc rcx
pop r12
call [putchar]
mov rcx, r12
call [putchar]
putchar実際にスタックをクリアしますか? これからスタック(または少なくともその重要な部分)を保護する方法を知っている人はいますか?