効果的なRAMの使い方を2つ解説します。CALLTテーブルとsreg変数です。使い方は、CALLTの場合は、通常の関数宣言の前にcalltを、sreg変数は、通常の変数宣言の前にsregを、修飾子のように付けるだけです。例えば、下記です。
callt static void MainFuncCaller(void); // CALLTで高速化
sreg unsigned char CntTau02Int = 0x00U; // sreg変数で高速化
ユーザーズマニュアル RL78,78K0Rコーディング編 「図3―2 メモリ空間の利用」を観ると、CALLTテーブルと、sreg変数という用途のアドレスがあることが判ります。CALLTテーブルは、通常の関数CALLよりも高速に呼ぶためのテーブル領域です。呼出し回数が多い関数や、高速起動したい関数に好適です。sreg変数は、通常よりも高速アクセスできるショート・ダイレクト・アドレッシング領域内の変数のことで、これもアクセス頻度が高い変数に向いています。その他にも、いろいろな用途の領域がありますが、これら2つは利用効果が高く、副作用も無いので、安心して使えます。
CALLTテーブルもsreg変数も、CubeSuite+のビルド・ツールのパラメタを設定すると、ツールが自動で選んだ関数/変数に適用できます。しかし、デフォルトでは未使用設定ですし、ツール更新のたびに再設定するのは、忘れるなどのミスを招きます。プログラマが、関数と変数を選んで、これらの高速化の修飾を明示的につける方が良いでしょう。注意点は、利用できるサイズが64/148バイトと小さいので、CubeSuite+のビルド・ツール、変数/関数配置オプションのROM/RAM使用量を表示する(デフォルト:いいえ)を、“はい”に設定して、常に使用量を把握しておくことです。