こんにちは。こじこじです。
RL78/G13を使用しています。スタックポインタに格納されている値を取得するにはどうすれば良いでしょうか?
開発環境は以下の通りです。
IDE:e2studio (Version:2021-07)
コンパイラ:GCC for Renesas RL78 (Version:4.9.2.202002
言語:C言語
スタック領域の使用量の自己診断機能を作成しようとしています。
次のどちらかで現在のスタックポインタ(SP)の値を取得しようとしているのですが、うまくいきません。
①アセンブラでspをどこかに格納する。
→アセンブラを扱ったことがなく、うまくいっていません。
Cソース内に、【asm("movw ax,sp")を定義すれば、spを汎用レジスタaxに格納することはできましたが、今度はaxを読み出す方法がわからず
行き詰ってしまいました。axを自分で定義した変数に格納できればいいのですが。。。
②スタックポインタが格納されているメモリアドレスを直接参照して、値を取得する。
→メモリアドレスが分からなかったです。
アドバイスお願いいたします。
こじこじ さん、こんにちは。NoMaYです。ところで、RL78の無料コンパイラには、GCC for Renesas RL78の他に、LLVM-RL78というのもあって、C言語拡張文法やビルトイン関数などがCC-RLの完全コピー(目標)となっているのですが、そちらは選択肢にならないのでしょうか?誘導尋問みたいな書き方になってしまうのですけれども、コード生成機能やRL78スマートコンフィグレータにてRL78/G13+LLVM-RL78がサポートされていないから、という理由だったりしますでしょうか?すみません、LLVM-RL78により本件が素朴に解決する、というわけでも無いのですけれども。
チョコさん、NoMaYさん。こじこじです。
お返事遅くなり申し訳ございません。
まずはSPの配置アドレスについての情報ありがとうございます。
コンパイラについてですが、開発開始時に「LLVM-RL78」の存在を知らず、「GCC for Renesas RL78」を使用していました。
そのまま不都合がなく、開発が終盤となってしまいました。諸事情により、今更開発環境を変えることができないので、
「GCC for Renesas RL78」を使用しています。
「LLVM-RL78」は今後の参考にさせていただきます。
ありがとうございます。