コンパイラ最適化技術とオブジェクトコードサイズの削減(定数の畳み込み)

コンパイラの最適化手法には、実行速度向上を主目的とするものとコードサイズ縮小を主目的とするものがあります。 - 定数の畳み込み(Constant Folding) : ソースコード内の定数同士の計算式(例: 3600 * 24 や 1 << 8 など)をコンパイル時にあらかじめ計算して単一の定数値( 86400 や 256 )に置き換える最適化です。実行時の演算命令列が不要となり、即値命令への置換によって オブジェクトコードの所要記憶容量を確実に削減 できます。したがって、正解は イ です。 ア: 関数のインライン展開は、関数呼出しオーバーヘッドをなくすために関数本体を呼出し箇所に展開する手法で、呼出し箇所が多いとコードサイズは肥大化します。 ウ: ループ内不変式の移動は、ループ外に計算を移動してループ内の実行速度を向上させる手法であり、コードサイズの削減には直結しません。 エ: ループのアンローリング(ループ展開)は、ループ本体を複数回並べて分岐回数を減らす高速化手法であり、コードサイズは著しく増大します。

コンパイラによる最適化において,オブジェクトコードの所要記憶容量が削減できるものはどれか。

出典平成31年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問11
ア
関数のインライン展開
イ
定数の畳み込み
ウ
ループ内不変式の移動
エ
ループのアンローリング