backpatching
はどういう意味ですか?簡単な例で説明してください。
バックパッチは、通常、コードに植え付けられた前方分岐を解決するプロセスを指します。 「if」ステートメントで、ターゲットの値がわかったとき、例えば閉じ括弧または一致する「else」に遭遇したとき。
コンパイラの中間コード生成段階では、多くの場合、まだ存在しないコードの場所に「ジャンプ」命令を実行する必要があります。このタイプのケースに対処するために、その命令にターゲットラベルが挿入されます。プロダクションルールの非終端マーカーにより、セマンティックアクションが選択されます。
バックパッチ:シンタックス指定の定義は、2つ以上のパスで実装できます(合成属性と継承属性の両方があります)。
最初にツリーを構築します。
深さ優先順でツリーを歩きます。
ワンパスでのコード生成の主な難点は、制御ステートメントのフローのコードを生成するときに分岐のターゲットがわからない場合があることです
バックパッチは、この問題を回避する手法です。空のターゲットで分岐命令を生成するターゲットがわかったら、分岐命令のラベルを埋めます(バックパッチ)。
バックパッチは、前方参照を含む命令のオペランドフィールドが最初に空白のままになるプロセスです。前方参照シンボルのアドレスは、その定義がプログラムで検出されると、このフィールドに入れられます。
バックパッチは、コード生成プロセス中に適切なセマンティック式を使用して、ラベルの不特定の情報を埋めるアクティビティです。
以下によって行われます。