2
私はmainによって呼び出される関数を持っています。関数名がfunct1
であるとします。 funct1
はread_input
という別の関数を呼び出します。x86アセンブリ関数
push %rbp
push %rbx
sub $0x28, %rsp
mov $rsp, %rsi
callq 4014f0 read_input
cmpl $0x0, (%rsp)
jne (some terminating function)
:この場合
- は、
read_input
だけ%rbx
1つの引数を、持っていない、次のようには今で
funct1
開始を想定しますか? - さらに、スタックポインタが
0x28
だけ減少している場合、これはサイズ0x28
の文字列が スタックにプッシュされていることを意味しますか? (私はそれが文字列であることを知っています)。 - 関数を呼び出す前に
mov %rsp, %rsi
の意味は何ですか? - 最後に、
read_input
が返された場合、戻り値はどこに置かれますか?
ご質問ありがとうございます。私はx86を学び始めたばかりです。
あなたのコードはどこから来ましたか? Cソースから生成しましたか? – Giorgio
スタックポインタを小さくすると、ローカル変数がスタックに割り当てられている可能性があります。 – Giorgio
4へ:read_inputの呼び出しに続く命令のスタックの先頭と0が比較されるため、戻り値がスタックにある可能性があります。 – Giorgio