効果的なRAMの利用方法

効果的なRAMの使い方を2つ解説します。CALLTテーブルsreg変数です。使い方は、CALLTの場合は、通常の関数宣言の前にcalltを、sreg変数は、通常の変数宣言の前にsregを、修飾子のように付けるだけです。例えば、下記です。

callt static void          MainFuncCaller(void);  // CALLTで高速化

sreg unsigned char    CntTau02Int = 0x00U;   // sreg変数で高速化

図3―2 メモリ空間の利用
ユーザーズマニュアル RL78,78K0Rコーディング編 「図3―2 メモリ空間の利用」より抜粋

ユーザーズマニュアル RL78,78K0Rコーディング編 「図3―2 メモリ空間の利用」を観ると、CALLTテーブルと、sreg変数という用途のアドレスがあることが判ります。CALLTテーブルは、通常の関数CALLよりも高速に呼ぶためのテーブル領域です。呼出し回数が多い関数や、高速起動したい関数に好適です。sreg変数は、通常よりも高速アクセスできるショート・ダイレクト・アドレッシング領域内の変数のことで、これもアクセス頻度が高い変数に向いています。その他にも、いろいろな用途の領域がありますが、これら2つは利用効果が高く、副作用も無いので、安心して使えます。

CALLTテーブルもsreg変数も、CubeSuite+のビルド・ツールのパラメタを設定すると、ツールが自動で選んだ関数/変数に適用できます。しかし、デフォルトでは未使用設定ですし、ツール更新のたびに再設定するのは、忘れるなどのミスを招きます。プログラマが、関数と変数を選んで、これらの高速化の修飾を明示的につける方が良いでしょう。注意点は、利用できるサイズが64/148バイトと小さいので、CubeSuite+のビルド・ツール、変数/関数配置オプションのROM/RAM使用量を表示する(デフォルト:いいえ)を、“はい”に設定して、常に使用量を把握しておくことです。

 

One thought on “効果的なRAMの利用方法”

  1. I’m impressed, I must say. Really rarely do I encounter a blog that’s both educative and entertaining, and let me inform you, you will have hit the nail on the head. Your idea is excellent; the issue is something that not sufficient individuals are speaking intelligently about. I am very completely satisfied that I stumbled across this in my search for something relating to this.

コメントを残す