2011-09-06 9 views
1

sigsetjmp()siglongjmp()の機能を理解しようとしています。マニュアルページには、sigsetjmp()はコンテキストを保存し、siglongjmp()はコンテキストを復元することを示しています。私の質問は、彼らはまた、スタックポインタとプログラムのカウンタ値の世話をしますか?sigsetjmpとsiglongjmpに関する質問

追加リソースへのリンクは大歓迎です。

+0

これは、完了したときに関数呼び出しが戻るかどうかを確認するようなものではありませんか? – ikegami

答えて

1

はい、すべてのコンテキストを処理します。正確には実装に依存します。

specと実装のマニュアルページの両方を必ず読んでください。これらの機能には注意が必要です。扱いにくいです。

+0

実装に依存していることを教えてください。すべてのプラットフォームで、SPとPCは保存されますか?また、プラットフォーム間の違いの例を教えてください。 – CuriousCoder

+0

すべてのCPUが必ずしもスタックポインタまたはプログラムカウンタを持っているとは限りません(具体的な例はわかりませんが)。 C++(およびC)標準では、「実装の詳細」であるため、これらのことは言及していません。 AFAIK、どちらの標準もスタックを必要としません。 – Mat

2

スタックポインタとプログラムカウンタは両方ともコンテキストの一部です(本質的にCPUレジスタの状態と考えることができます)。