Loading article…
コンピュータサイエンスにおいて、3アドレスコード[1](TACまたは3ACと略されることが多い)は、最適化コンパイラがコード改善変換の実装を支援するために使用する中間コードです。各TAC命令は最大で3つのオペランドを持ち、通常は代入と二項演算子の組み合わせです。たとえば、 です。この名前は、命令によってはオペランドが少ない場合もありますが、これらのステートメントでは3つのオペランドが使用されることに由来しています。
t1 := t2 + t3
3 アドレス コードはコンパイラ内で中間言語として使用されるため、オペランドは具体的なメモリ アドレスやプロセッサ レジスタではなく、レジスタ割り当て時に実際のアドレスに変換されるシンボリック アドレスになる可能性が高くなります。3 アドレス コードは通常コンパイラによって生成されるため、オペランド名に連番が付けられることも珍しくありません。
3 アドレス コードの改良版がA 正規形(ANF) です。
例
3 アドレス コードでは、これは複数の個別の命令に分割されます。これらの命令は、アセンブリ言語に簡単に変換できます。また、コードを短縮するための共通のサブ式を検出することも簡単になります。次の例では、1 つの計算が複数の小さな計算で構成されています。
3 アドレス コードには、条件付きおよび無条件のジャンプやメモリにアクセスするメソッドが含まれる場合があります。また、関数を呼び出すメソッドが含まれる場合や、関数をジャンプに減らす場合もあります。このように、3 アドレス コードは制御フロー解析で役立ちます。次の C のような例では、ループで 0 から 9 までの数字の 2 乗を格納します。
参照
- 中間言語
- 縮小命令セットコンピュータ
- 静的単一割り当て形式(SSA)
