sigsetjmp()
とsiglongjmp()
の機能を理解しようとしています。マニュアルページには、sigsetjmp()
はコンテキストを保存し、siglongjmp()
はコンテキストを復元することを示しています。私の質問は、彼らはまた、スタックポインタとプログラムのカウンタ値の世話をしますか?sigsetjmpとsiglongjmpに関する質問
追加リソースへのリンクは大歓迎です。
sigsetjmp()
とsiglongjmp()
の機能を理解しようとしています。マニュアルページには、sigsetjmp()
はコンテキストを保存し、siglongjmp()
はコンテキストを復元することを示しています。私の質問は、彼らはまた、スタックポインタとプログラムのカウンタ値の世話をしますか?sigsetjmpとsiglongjmpに関する質問
追加リソースへのリンクは大歓迎です。
はい、すべてのコンテキストを処理します。正確には実装に依存します。
specと実装のマニュアルページの両方を必ず読んでください。これらの機能には注意が必要です。扱いにくいです。
実装に依存していることを教えてください。すべてのプラットフォームで、SPとPCは保存されますか?また、プラットフォーム間の違いの例を教えてください。 – CuriousCoder
すべてのCPUが必ずしもスタックポインタまたはプログラムカウンタを持っているとは限りません(具体的な例はわかりませんが)。 C++(およびC)標準では、「実装の詳細」であるため、これらのことは言及していません。 AFAIK、どちらの標準もスタックを必要としません。 – Mat
スタックポインタとプログラムカウンタは両方ともコンテキストの一部です(本質的にCPUレジスタの状態と考えることができます)。
これは、完了したときに関数呼び出しが戻るかどうかを確認するようなものではありませんか? – ikegami