命令セット・アセンブリ
呼び出し規約(コーリングコンベンション)が決められている主な目的はどれか。
- A関数の名前の付け方をそろえ、プログラムを読みやすくする
- B別々にコンパイルした関数やライブラリ同士が、引数や戻り値を正しく受け渡せるようにする
- C関数を呼ぶたびにOSの許可を得るようにする
答えと解説を見る
正解:B. 別々にコンパイルした関数やライブラリ同士が、引数や戻り値を正しく受け渡せるようにする
呼び出し規約は、引数をどのレジスタに入れるか、戻り値はどこに返すか、どのレジスタを呼ばれた側が壊してよいか、スタックをどう使うかを定めます。この約束があるので、違うコンパイラで作ったライブラリや、アセンブリで書いた関数とC言語の関数を組み合わせても正しく動きます。呼び出し規約はABI(アプリケーションバイナリインターフェース)の重要な一部です。
- A. 名前の付け方の規則ではありません。
- B. 正しい。機械語レベルの約束ごとです。
- C. 関数呼び出しにOSは関わりません。