• 検索結果がありません。

RTL 式

ドキュメント内 修 士 論 文 (ページ 37-40)

第 4 章 既存のコンパイラをベースとするコンパイラフレームワークの構築 24

4.2 RTL

4.2.3 RTL 式

RTL式の基本

RTLにおける式(RTXと呼ぶ)は,RTLで表現されたプログラムを構成する単位とし て用いられるものと,他のRTXのオペランドとしてメモリ,レジスタ等のオブジェクト の参照や演算式の表現などを行なうために用いられるものの2種類がある.

RTXは式コード,フラグ,マシンモード,オペランドから成り,プログラム本体と最適 化のための情報が全て同じ書式で記述される.(図4.3)

(式コード[/フラグ1/フラグ2...][:マシンモード]

オペランド1オペランド2オペランド3...) 図 4.3: RTXの書式

式コード

式コードはRTXの振る舞いとオペランドの数と種類,そしてオペランドの順序を決定 する.オペランドは整数,文字列,ベクトル,RTXのいずれかをとる.RTLでは式コー ドからオペランドの型を決定できる.

式クラス

式コードはその種類によっていくつかのクラスに分類される.これらのクラスはRTL クラスと呼ばれ,アルファベット1文字で表現される.式クラスがRTLに記述されるこ とはない.(表4.4)

式クラス 意味

o レジスタやメモリなどの実際のオブジェクト

< 比較演算

1 単項演算

c 交換可能な2項演算 2 交換可能でない2項演算 b ビットフィールド演算

3 3項演算

i 命令全体

m 命令列にマッチするもの

x その他全て

表 4.4: 式クラス一覧

フラグ

フラグはRTXに対して情報を補足するために用いられる.フラグはアルファベット一 文字で表現され,同じフラグでも式コードによって異なる意味を持つ.

フラグの主な用途は以下のとおり.

参照するオブジェクトの種類を表わす.

使用するレジスタの用途

RTXの属性

ラベル参照の有無,参照の目的,参照の方法

RTXにフラグが設定されている場合には式コードの後に’/’に続けてフラグを表わすア ルフェベットを書く.1つのRTXに対して,複数のフラグがある場合にはこれを繰り返す.

マシンモード

データオブジェクトの大きさとその表現方法を表わす.同じ式コードでも異なるマシン モードを持つ場合があり,それは式の使用される文脈によって決まる.

マシンモードはフラグのあとに’:’に続けて記述される.式コードによってはマシンモー ドは固定であり,その場合にはマシンモードの記述は不要となる.マシンモードは通常

XXmodeと表記するが,RTLテキストダンプでは後のmodeを省略して表記する.(表4.5)

マシンモード 意味

QImode 1/4精度整数(1バイト)

HImode 1/2精度整数(2バイト)

PSImode 部分単精度整数(4バイト)

SImode 単精度整数(4バイト)

PDImode 部分倍精度整数(8バイト)

DImode 倍精度整数(8バイト)

TImode 4倍精度整数(16バイト)

SFmode 単精度浮動小数点数(4バイト)

DFmode 倍精度浮動小数点数(8バイト)

XFmode 拡張精度浮動小数点数(12バイト)

TFmode 4倍精度浮動小数点数(16バイト)

CCmode 比較演算の結果を表わす機種固有のビット群

BLKmode ブロックモード.他のどのモードも適用できない.

VOIDmode モードがない.もしくはモードを指定しない.

表 4.5: マシンモード

ここに挙げたマシンモードは最も一般的なものである.GCCのバージョンによっては,

文書化されていないフラグが多数定義されている場合もある.

フォーマット文字列

式コードによって決まる.RTXのオペランドの数と順序,種類を表わす文字列である.

オペランドの種類はフォーマット文字と呼ばれるアルファベット一文字で表記される.(表 4.6)

例)

subreg式のフォーマット文字列は"ei".つまりオペランドとして一つのRTL式とひと つの整数値をとる.

この他にフォーマット文字’u’が存在するが,これは’e’に等しい.INSNへのポイン タを表わすために特に用意されている.

フォーマット文字 意味

e RTX

i 整数

w 幅広整数

s 文字列

E RTL式のベクトル

表 4.6: フォーマット文字 式クラスとフォーマット文字列

式クラスによってはそのクラスに属する全ての式が全て同じフォーマット文字列を持 つ.(表4.7)

式クラス フォーマット文字列

1 "e"

<,c,2 "ee"

b,3 "eee"

i "iuueiee"

o,m,x フォーマットを仮定できない.

表 4.7: 式クラス対するフォーマット文字列

ドキュメント内 修 士 論 文 (ページ 37-40)