私はいつも、try/throw/catchがバックグラウンドでどのように見えているのか、C++コンパイルによってアセンブラに変換されるのか疑問に思ってきました。しかし、私はそれを使用していないので、私はそれをチェックアウトすることは決してなかった(一部の人々は怠け者と言うだろう)。C++ try/throw/catch =>マシンコード
はtry
秒を追跡するために使用される通常のスタックです、またはこのためにのみ保持別々のスレッドごとのスタックのですか? MSVCとg ++の間の実装は大小ですか?擬似ASM(IA-32も大丈夫です)を私に見せてください。決して自分でそれをチェックする必要はありません! :)
編集:ここで、IA-32の処理に関するMSVCの実装の基本について説明します。 IA-32上のg ++やその他のCPUについて知っている人は誰ですか?
これは、Windowsの構造化例外処理を対象としています。これは、C++の例外処理と関連していますが、同じではありません。Pietrekは、はじめに、MicrosoftとBorlandによって実装されたC++の例外はSEHを使用していますが、彼の記事では実装方法をカバーしていないことに言及しています。 –
長いMSVC/IA-32記事。 –
C++例外はSEH例外のクラスに過ぎず、C++情報(例外クラスインスタンス)を含むラッパーがあります。 C++例外はSEHを使用してカーネル境界などを伝播する必要があります。 –