「基本ブロック」の版間の差分

削除された内容 追加された内容
m 長期荒らしによる ID:63544838 の版を取り消し
妥当な編集に対する機械的な取り消しを取り消し。ついでに微修正(スペース追加)。立木慶一 (会話) による ID:68673921 の版を取り消し
タグ: 取り消し
 
14行目:
 
基本ブロックを終了させる命令には以下のものがある:
* 無条件、あるいは条件[[分岐命令]]、直接分岐も間接分岐も含む
* 呼び出し元の手続きへの[[Return文|return]]
* [[例外処理]]を発生させうる命令
* 復帰しない関数は基本ブロックの終端になる。たとえば、例外や特別な呼び出しを発生する[[C言語]]の [[:en:Longjmp|<code>longjmp</code>]] や <code>exit</code> 関数などがある
 
基本ブロックを開始させる命令には以下のものがある:
* 手続きや関数のエントリーポイント
* ジャンプや分岐の対象
* 条件分岐命令の後の、分岐しなかった場合のコード
* 例外を発生させる命令の後のコード
* 例外ハンドラ
 
制御が基本ブロックの最後を通過することはないため、ブロックの境界は、基本ブロックを見つけた後に修正しなければならない場合もある。特に、分岐しなかった場合のコードは二方向の分岐に変換し、例外を発生させる関数呼び出しには無条件分岐を付き足なければならない。このため他のブロックの先頭にラベルをつける必要が生じる場合もある。
38行目:
* [http://gcc.gnu.org/onlinedocs/gccint/Basic-Blocks.html Basic Blocks - GNU Compiler Collection]
 
{{DEFAULTSORT:きほんく}}
[[Category:コンパイラ]]