スタックから関数の呼び出し元を解析する方法

リセットせざるを得ないようなエラーが起こった際、
その関数の呼び出し元をNVMに記憶してリセットするようにしたいのですが、
スタックから関数の呼び出し元を実行時に解析する方法はありますか?

 

CS+のコールスタック機能では、関数の呼び出し元を表示することができています。
これを、実行時に2,3階層さかのぼって、関数の呼び出し元のアドレスを取得したいです。

 

よろしくお願いいたします。

Parents
  • スタックがぶっこわれてなければスタックの内容はスタックフレームが連続してる形となってる筈なのでROMの内容と対応を取ることはある程度可能とは思いますが、「リセットせざるを得ないようなエラーが起こった際」になんかできるとは思わないですね。
  • 返信ありがとうございます。
    スタック中のメモリの使われ方は、コンパイラマニュアルには載っていなかったのですが、
    C89等の言語規格で決まってるんでしょうか?

    後で解析する用で、運が良ければNVMに残せればいいなと考えています。
  • > スタック中のメモリの使われ方は、コンパイラマニュアルには載っていなかったのですが、
    > C89等の言語規格で決まってるんでしょうか?

    コンパイラの生成するコードを見る他ないと思いますがそんな難しいものではないです。
Reply
  • > スタック中のメモリの使われ方は、コンパイラマニュアルには載っていなかったのですが、
    > C89等の言語規格で決まってるんでしょうか?

    コンパイラの生成するコードを見る他ないと思いますがそんな難しいものではないです。
Children