命令セット・アセンブリ
RISC-Vの標準の呼び出し規約で、整数の引数が10個ある関数を呼ぶとき、9個目と10個目の引数はどこで渡されるか。
- As0とs1
- Bt0とt1
- Cスタック上
答えと解説を見る
正解:C. スタック上
引数用のレジスタはa0〜a7の8本なので、9個目以降は呼び出す側がスタックに積み、呼ばれた側はスタックポインタからの決まった位置で読みます。メモリへのアクセスが増えるので、引数がとても多い関数は少し遅くなります。大きな構造体はまとめて構造体へのポインタで渡すなど、引数を少なくする工夫がよく使われます。
- A. s0〜は呼ばれた側が保存するレジスタで、引数用ではありません。
- B. t0〜は一時用のレジスタで、引数用ではありません。
- C. 正しい。レジスタに入りきらない分はスタックです。