Renesas Synergy™

FAQ 1011888 : C言語でのCALLT命令テーブルのアドレス指定(CC-RL)

Q : 質問

RL78コンパイラCC-RLを使用しています。 #pragma callt 機能を使用する場合に、関数ごとにCALLT命令テーブルのアドレス(0x80-0xBF)を指定できますでしょうか? また、CALLT命令テーブルの配置順は、どうなりますでしょうか?


A : 回答

#pragma callt等で関数ごとのアドレスを指定することはできません。

CALLTテーブル領域に配置する順番は、次のようになります。
・リンク順
・同じファイル内は関数の定義順
  #pragma callt や __callt によるcallt関数の宣言や関数呼び出しの順番は影響しません。
CC-RL V1.02.00以降では、リンカの未参照シンボルを削除する最適化機能が搭載されています。
この機能を使用した場合には、callt関数の定義があっても、関数がどこからも呼ばれない場合は関数自体が削除されます。
これにより、CALLTテーブル領域に関数アドレスを登録する際には順番が入れ替わることはありませんが、関数が削除された場合には順番が繰り上がります。

適用製品

CS+ (旧 CubeSuite+)
RL78ファミリ用Cコンパイラパッケージ
e² studio
他にご質問がございましたら、リクエストを送信してください