Mac OS X の x86_64 でコマンド ライン引数を取得するには、次のようにします。
_main:
sub rsp, 8 ; 16 bit stack alignment
mov rax, 0
mov rdi, format
mov rsi, [rsp + 32]
call _printf
フォーマットは「%s」です。rsi は argv[0] に設定されます。
したがって、これから、スタックが最初にどのように見えるか(私が思うに)を引き出しました。
top of stack
<- rsp after alignment
return address <- rsp at beginning (aligned rsp + 8)
[something] <- rsp + 16
argc <- rsp + 24
argv[0] <- rsp + 32
argv[1] <- rsp + 40
... ...
bottom of stack
等々。読みづらかったらすいません。【何か】が気になる。いくつかのテストの後、通常は 0 であることがわかりました。ただし、(一見) 乱数である場合もあります。
また、残りのスタックの描画が正しいかどうか教えていただけますか?