RL78のローカル変数のメモリアドレスについて

こんにちは。SUZUKIです。

 

RL78/G14用のプログラムをCS+で開発中に良く分からない現象に遭遇しました。

プログラムは

void test(char a){

char b = 0;

b = a+10;

}

という簡単なものです。

この時に変数a,bをウォッチするとアドレスがそれぞれ[L:REG][H:REG]となっており、変数bの値は0のままでした。

動作する条件としては下記3つありました。

1.変数bの宣言をグローバルで行った場合

2.別の変数(使用しない)を関数内で宣言した場合

3.変数bの型をint型にした場合

これらの時は変数a,b共にアドレスが割り当てられ正常に動作しました。

これはどのような事が起きているのでしょうか。

宜しくお願い致します。

Parents
  • SUZUKIさん、こんにちは。NoMaYです。

    まず、コンパイラのバージョンの確認方法ですが、以下の画面コピーのように、CS+のメニュー[ヘルプ]→[バージョン情報]もしくはメニュー[ヘルプ]→[詳細バージョン情報]、の何れかを選択します。




    ここまでは御存知かと思いますが、この時、プロジェクトを開いた状態であれば、以下の部分にコンパイラのバージョンが表示されます。




    注意が必要なのは、この時、プロジェクトを開いていない状態だと、その部分にはコンパイラのバージョンは表示されない、という点です。




    ちなみに、上の画面コピーはCS+ for CA,CXですが、CS+ for CCでも以下の画面コピーのように事情は同じです。

    プロジェクトを開いた状態であれば、以下の部分にコンパイラのバージョンが表示されます。




    プロジェクトを開いていない状態だと、その部分にはコンパイラのバージョンは表示されないです。




    後ほど、もう1つ投稿します。

Reply
  • SUZUKIさん、こんにちは。NoMaYです。

    まず、コンパイラのバージョンの確認方法ですが、以下の画面コピーのように、CS+のメニュー[ヘルプ]→[バージョン情報]もしくはメニュー[ヘルプ]→[詳細バージョン情報]、の何れかを選択します。




    ここまでは御存知かと思いますが、この時、プロジェクトを開いた状態であれば、以下の部分にコンパイラのバージョンが表示されます。




    注意が必要なのは、この時、プロジェクトを開いていない状態だと、その部分にはコンパイラのバージョンは表示されない、という点です。




    ちなみに、上の画面コピーはCS+ for CA,CXですが、CS+ for CCでも以下の画面コピーのように事情は同じです。

    プロジェクトを開いた状態であれば、以下の部分にコンパイラのバージョンが表示されます。




    プロジェクトを開いていない状態だと、その部分にはコンパイラのバージョンは表示されないです。




    後ほど、もう1つ投稿します。

Children
No Data