コンピュータサイエンスにおいて、レジスタ転送言語(RTL )は、コンパイラで使用されるようなアセンブリ言語に非常に近い中間表現(IR)の一種です。アーキテクチャのレジスタ転送レベルでのデータフローを記述するために使用されます。[ 1 ]学術論文や教科書では、アーキテクチャ中立なアセンブリ言語としてRTLの形式がよく使用されています。RTLは、 GNUコンパイラコレクション(GCC)、Zephyr、欧州コンパイラプロジェクトのCerCoおよびCompCertなど、 いくつかのコンパイラで特定の中間表現の名前として使用されています。
歴史
このセクションは拡張が必要です。不足している情報を追加していただければ幸いです。 (2011年1月) |
RTLの背後にあるアイデアは、The Design and Application of a Retargetable Peephole Optimizerで初めて説明されました。[ 2 ]
GCC
GCCでは、GIMPLE表現からRTLが生成され、GCCミドルエンドの様々なパスによって変換され、アセンブリ言語に変換されます。[ 3 ]
GCC の RTL は通常、 Lisp のS 式のような形式で記述されます。
(セット(登録: SI 140 ) (プラス:SI (登録: SI 138 ) (登録: SI 139 )))この副作用式は、「レジスタ138の内容とレジスタ139の内容を合計し、その結果をレジスタ140に格納する」という意味です。SIは各レジスタのアクセスモードを指定します。この例では「SImode」、つまり「32ビットの 単一の整数としてレジスタにアクセスする」という意味です。
生成されるRTLのシーケンスは、GCCがコードを生成するプロセッサの特性に多少依存します。しかし、RTLの意味はターゲットとはほぼ独立しています。通常、どのプロセッサ向けに生成されたかを知らなくても、RTLの一部を読んで理解することは可能です。同様に、RTLの意味は、プログラムの元の高水準言語に依存することはほとんどありません。
レジスタ転送言語は、デジタルモジュールのレジスタ間のマイクロオペレーションシーケンスを記号形式で表現するためのシステムです。デジタルコンピュータの内部構成を簡潔かつ正確に記述するための便利なツールです。また、デジタルシステムの設計プロセスを簡素化するためにも使用できます。[ 4 ]
参考文献
- ^ Mahani, Negin (2013年1月16日). 「Adaにおけるレジスタ転送レベルおよびトランザクションレベルモデリングの実現」 . ACM SIGAda Ada Letters . 32 (2): 9– 16. doi : 10.1145/2429574.2429576 . 2024年9月8日閲覧。
- ^ 「Davidson and Fraser;再ターゲット可能なピープホールオプティマイザーの設計と応用; ToPLaS v2(2) 191-202 (1980年4月)」(PDF) 。 2024年2月23日時点のオリジナル(PDF)からアーカイブ。 2009年1月3日閲覧。
- ^ 「RTL (GNUコンパイラコレクション(GCC)内部)」 . gcc.gnu.org . 2026年1月14日閲覧。
- ^マノ、モリス・M. (1992).コンピュータシステムアーキテクチャ(第3版). プレンティスホール. p. 94. ISBN 0131755633。