How to use a flowchart template.
- 01コンパイルフェーズを整理する
ソースコードから出力までの主要な段階を、字句解析、構文解析、意味解析、最適化、コード生成などの順に列挙します。
- 02図の範囲を決める
高レベルのパイプラインにするか、中間表現(IR)の低レベル化などのサブステージまで展開するかを決めます。
- 03ステージの箱と矢印を作る
各段階にフローチャートの図形を使い、ソース、IR、ターゲットコード間のデータ変換を方向付き矢印で示します。
- 04最適化用の判断ノードを追加する
最適化パスやバックエンド選択が行われる分岐点を追加し、x86とARMのどちらへ出力するかなどを示します。
- 05注釈を付けて検証する
各段階を明確にする短いラベルやツールチップを追加し、遷移の抜けやフィードバックループがないか確認します。
Questions about flowchart templates
コンパイラパイプライン図とは?
コンパイラパイプライン図は、ソースコードを実行可能なマシンコードやバイトコードへ変換する際に、コンパイラが実行する各段階の順序を示すフローチャートです。
コンパイラパイプラインには通常どの段階が含まれますか?
一般的な段階には、字句解析、構文解析、意味解析、中間コード生成、最適化、最終コード生成またはリンクがあります。
高レベルと詳細なコンパイラフローチャートはどう使い分けますか?
専門外の人に全体構成を伝えるなら高レベルのフローチャートを、実装作業やコンパイラ内部の学習にはサブステージまで示した詳細なフローチャートを使います。
1つのフローチャートで複数のコンパイラバックエンドを表せますか?
はい。中間表現の後に分岐する判断ノードを追加し、LLVM IRからx86、ARM、WebAssemblyなど異なるターゲットバックエンドへつなげられます。
フローチャートで最適化パスをどう表現しますか?
IRが変換されるループ状の段階として、1つ以上の最適化ステージを表します。繰り返し可能なパスは、異なる色や破線の枠で示すと分かりやすくなります。