Renesas Synergy™

FAQ 3000240 : ミディアムモデルからスモールモデルへの変更による出力コード(CC-RL)

Q: 質問

RL78コンパイラCC-RLを使用しています。
メモリモデルを、ミディアムモデルからスモールモデルにしたら、コードサイズが削減されました。
出力コードがどのように変化して、コードサイズが削減されるのでしょうか?


A: 回答

ミディアムモデルの場合には、__near修飾子/__far修飾子を指定していない関数は、__far修飾子を指定した関数とします(以降、far関数)。
スモールモデルの場合には、__near修飾子/__far修飾子を指定していない関数は、__near修飾子を指定した関数とします(以降、near関数)。

far関数を呼び出す場合には、「CALL !!addr20」命令を使用します。この命令の命令長は4バイトです。
near関数を呼び出す場合には、「CALL !addr16」命令を使用します。この命令の命令長は3バイトです。

この様に、関数を呼び出す命令が短くなるために、スモールモデルは、ミディアムモデルよりもコードサイズが小さくなります。

適用製品

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