A.1.1.1 GP相対アクセス

GP(グローバル・ポインタ)と,ld/st命令によってアクセスできるセクションに変数を配置することにより変数のアクセスを1命令で行うコードを生成します。

変数の定義/ 参照時は,#pragma section指令を使用し,属性指定文字にgp_disp16/ gp_disp23 のいずれかを指定します。

 

#pragma section 属性指定文字
変数宣言/定義
#pragma section default

 

例 1.

GP相対で4バイトのロード/ストア命令によりアクセスする場合

#pragma section gp_disp16
int a = 1;              /*.sdata セクションに配置する*/
int b;                  /*.sbssセクションに配置する*/
#pragma section default

 

例 2.

GP相対で6バイトのロード/ストア命令によりアクセスする場合

#pragma section gp_disp23
int a = 1;             /*.sdata23 セクションに配置する*/
int b;                 /*.sbss23セクションに配置する*/
#pragma section default