EP(エレメント・ポインタ)と,sld/sst命令,またはld/st命令によってアクセスできるセクションに変数を配置することによりコード・サイズを削減することができます。以下のいずれかの方法により,EP相対でアクセスするセクションに変数を配置させることができます。
外部変数アクセス最適化を行います。最適化リンケージエディタが生成する外部シンボル割り付け情報を元に,アクセス頻度の高い外部変数に対してEP相対アクセスするコードを出力します。
変数の定義/ 参照時は,#pragma section指令を使用し,属性指定文字にep_disp4/ep_disp5/ep_disp7/ep_disp8/ep_disp16/ep_disp23/ep_auto のいずれかを指定します。
注意 | ep_disp32には,コード・サイズを削減する効果はありません。 |
#pragma section 属性指定文字
変数宣言/定義
#pragma section default
|
例 1. | EP相対で2バイトのロード/ストア命令によりアクセスする場合 |
#pragma section ep_disp4
int a = 1; /*.tdata4 セクションに配置する*/
int b; /*.tbss4セクションに配置する*/
#pragma section default
|
属性指定文字として,ep_disp5/ep_disp7/ep_disp8を指定しても同様のアクセスとなります。
例 2. | EP相対で4バイトのロード/ストア命令によりアクセスする場合 |
#pragma section ep_disp16
int a = 1; /*.edata セクションに配置する*/
int b; /*.ebssセクションに配置する*/
#pragma section default
|
例 3. | EP相対で6バイトのロード/ストア命令によりアクセスする場合 |
#pragma section ep_disp23
int a = 1; /*.edata23 セクションに配置する*/
int b; /*.ebss23セクションに配置する*/
#pragma section default
|