アプリケーション内でグローバル宣言したデータ(変数)を,RH850に内蔵されているRAM領域へ配置し,より高速な参照(ロード,ストア)を実現するために用意されているポインタが「エレメント・ポインタ(ep)」です。
グローバル宣言し,かつ,内蔵RAMに配置するデータ(変数)はep相対で参照されます。
エレメント・ポインタ(ep)に設定するアドレス値は,エレメント・ポインタ・シンボル(epシンボル)の値をアドレス値として設定します。
-  | epシンボルは,固定シンボル名“__ep_data”で扱います。  | 
 
-  | epシンボルは,スタートアップ・ルーチンで参照シンボル(.extern)として宣言してください。  | 
 
-  | epシンボルは,rlink内で外部定義シンボル(. public)を作成しアドレス値を決定します。  | 
 
-  | epシンボルの定義/参照に対する動作は以下のとおりです。  | 
 
-  | epシンボルが“.extern”宣言のみ存在している場合  | 
 
rlinkが定義情報を作成し,自動でアドレス値を設定します。
定義されたアドレス値を使用します。
-  | epシンボルが存在しない(使用されていない)場合  | 
 
ep相対を参照するコードに対して,次のエラー・メッセージが出力されます。
| 
 
Undefined external symbol "EP-symbol (__ep_data)" referenced in "FILE" 
 | 
 
epシンボル値は,再配置属性がtdata,tdata4/5/7/8,tbss4/5/7/8,edata,ebss,edata23,およびebss23のセクションから以下の優先順位で決定します。
 
以下に,epシンボル値の決定例を示します。
(a)  | 再配置属性がtdata,tdata4/5/7/8,およびtbss4/5/7/8のセクションが存在する場合  | 
 
tdata→tdata4,またはtbss4→・・・→tdata8, またはtbss8の優先順位で,存在するセクションの開始アドレスをepシンボルに設定します。
(b)  | 再配置属性がedata,またはebssのセクションが存在する場合  | 
 
edata,またはebssセクションに対して“1番小さいアドレスに配置されたセクションの開始アドレス”と“1番大きいアドレスに配置されたセクションの終了アドレス”の真ん中(2の倍数値,奇数の場合は最初の2の倍数値)をepシンボルのアドレス値として設定します。
<1>  | アドレスの小さい方から,edata,ebssセクションの順で配置されている場合  | 
 
<2>  | アドレスの小さい方から,ebss,edataセクションの順で配置されている場合  | 
 
<3>  | アドレスの小さい方から,edata,ebssセクションの順で配置し,edata,ebssセクションの間に対象外のセクションが存在している場合  | 
 
(c)  | 再配置属性がedata23,またはebss23のセクションが存在する場合  | 
 
edata23,またはebss23セクションに対して“1番小さいアドレスに配置されたセクションの開始アドレス”と“1番大きいアドレスに配置されたセクションの終了アドレス”の真ん中(2の倍数値,奇数の場合は最初の2の倍数値)をepシンボルのアドレス値として設定します。
以下に,epシンボル値の決定例を示します。
<1>  | アドレスの小さい方から,edata23,ebss23セクションの順で配置されている場合  | 
 
<2>  | アドレスの小さい方から,ebss23,edata23セクションの順で配置されている場合  | 
 
<3>  | アドレスの小さい方から,edata23,ebss23セクションの順で配置し,edata23,ebss23セクションの間に対象外のセクションが存在している場合  | 
 
(d)  | 再配置属性がtdata,tdata4/5/7/8,tbss4/5/7/8,edata,ebss,edata23,およびebss23セクションが存在しない場合  | 
 
tdata,tdata4/5/7/8,tbss4/5/7/8,edata,ebss,edata23,およびebss23セクションが存在しない場合は,epシンボルのアドレス値を0(ゼロ)として設定します。