Linux (または OS X) で関数呼び出しを行う場合、呼び出し先はスタック上の引数の値を変更できますか? 私は、呼び出し元がそれらをクリーンアップするものであるため、関数呼び出し後に同じ値を含める必要があると想定していました。ただし、-O2 を指定した GCC は、スタック上で渡されたパラメーターを変更していたことがわかりました。System V i386 呼び出し規則を含むドキュメントも探しましたが、これに対する決定的な答えを見つけることができませんでした。
これが私がデバッグしていたサンプルコードです。
pushl %eax # %eax = 0x28
call _print_any
popl %eax
# %eax is now 0x0a
スタック上のそのパラメーターを変更するGCCは問題ないと思いますが、それができると指定されている場所を知りたいです。