平成28年度春期 エンベデッドシステムスペシャリスト試験 午前II 問24
【問題24】
C言語で作成されたプログラム全体で使用するスタックフレームのサイズが,確保したサイズ内に収まっていることを検証したい。各関数が使用するスタックフレームのサイズ情報に加え,必要となる情報はどれか。
【解説】
ア: 各関数が使用するレジスタの退避領域のサイズ
誤り。レジスタの退避領域のサイズはスタックフレームに含まれますが、これだけではプログラム全体のスタック使用量を評価するのに十分ではありません。
イ: 各関数が使用するローカル変数のサイズ
誤り。ローカル変数のサイズもスタックフレームに含まれますが、関数間の呼び出し関係を把握しないと、全体のスタック使用量は正確に評価できません。
ウ: 各関数の呼出し関係(呼出しツリー)
正しい。呼出しツリーを考慮することで、同時にどの関数がスタックを使用するかを特定し、プログラム全体のスタック使用量を正確に計算できます。
エ: グローバル変数の合計サイズ
誤り。グローバル変数はスタックではなく、データセクションやBSSセクションに配置されるため、スタックサイズの計算には関係ありません。
【答え】
ウ: 各関数の呼出し関係(呼出しツリー)
出典:平成28年度 春期 エンベデッドシステムスペシャリスト試験 午前II 問24