[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
各命令パターンには、後で埋められる部分を持つ不完全な RTL 式と、各部分が
どのように埋められるかを限定するオペランド制約、それに、出力パターンまたは
アセンブラ出力を生成する C コードが含まれており、全て define_insn
式
中に記述される。
define_insn
は一つの RTL 式で、四つか五つのオペランドを持つ。
それぞれのオペランドは以下の通りである。
名前を書くべき位置に空文字列を書くと名前がないということになる。 名無しの命令パターンは RTL コードの生成に使われることはありえない。 しかし、名無しの命令パターンを使うと、様々なより単純な insn を後で 結合させることが出来る。
つまり、RTL生成時に知られていない、あるいは使われもしない名前は 何の効果ももたらさない。名無しと全く同じである。
match_operand
や match_operator
、match_dup
等の式を含むからである。
RTL テンプレート・ベクトルに要素が一つしかなければ、その要素は命令パターンの
テンプレートである。ベクトルに要素が複数あれば、その命令パターンは
列挙された要素を含む parallel
式である。
名前を持つパターンについては、条件は(もしあれば)、 マッチする insn 中のデータには依存せず、ターゲット機種の型のフラグに のみ依存する。GCC は、初期化時にこの条件を調べて、どういう名前の 命令が一回毎の実行時に利用できるのかを厳密に調べる必要がある。
名無しのパターンについては、条件は個々の insn とのマッチングを行なう時と、
insn が、そのパターンの評価テンプレートにマッチした後にのみ
適用される。insn のオペランドは、ベクトル operands
に入っている。
単なる置き換えでは充分でないときは、C コードの断片を指定して、計算を 行なったうえで出力させることも出来る。See section アセンブラ出力用の C 言語の文.
This document was generated
using texi2html 1.78.