コンピュータサイエンスにおいて、レジスタ転送言語(RTL )は、コンパイラで使用されるようなアセンブリ言語に非常に近い中間表現(IR)の一種です。これは、アーキテクチャのレジスタ転送レベルでのデータフローを記述するために使用されます。[ 1 ]学術論文や教科書では、アーキテクチャに依存しないアセンブリ言語として、RTL の形式がよく使用されます。RTLは、 GNU Compiler Collection(GCC)、Zephyr、および欧州のコンパイラプロジェクトである CerCo とCompCertを含むいくつかのコンパイラで、特定の中間表現の名前として使用されています。
RTLの背後にあるアイデアは、「リターゲット可能なピープホールオプティマイザの設計と応用」で初めて説明されました。[ 2 ]
GCCでは、RTLはGIMPLE表現から生成され、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 ]