アセンブリでスタックを使用する方法を理解しようとしていたところ、SO の質問の 1 つで次のコードに出くわしました。
push ecx
mov eax, 4
mov ebx, 1
mov ecx, result
mov edx, result_len
int 0x80
mov eax, 4
mov ebx, 1
mov ecx, esp
add [ecx], DWORD 48
mov edx, 2
int 0x80
この場合、ecx は数値を保持しており、作成者は (間違っている場合は訂正してください!) 最初にスタック ポインターを ecx に移動し、次に ecx がメモリ アドレスに 48 を追加して数値を ASCII 文字に変換することによって数値を表示しています。指しています。彼は同じことを「pop ecx」で実行してから ascii に変換できたでしょうか? 著者がなぜこのように進めているのか、私にはよくわかりません。どんな助けでも大歓迎です。