[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

15.15 式としてのアセンブラ命令

RTX コード asm_operands は、ユーザが指定したアセンブラ命令に より生成される値を表現する。引数付きの asm 文を表現するのに 使われる。出力オペランドが一つの asm 文は以下のようになる。

 
asm ("foo %1,%2,%0" : "=a" (outputvar) : "g" (x + y), "di" (*z));

この asm 文は、値が outputvar に格納されることを 表現する、一個の asm_operands RTX を使って以下のように表現される。

 
(set rtx-for-outputvar
     (asm_operands "foo %1,%2,%0" "a" 0
                   [rtx-for-addition-result rtx-for-*z]
                   [(asm_input:m1 "g")
                    (asm_input:m2 "di")]))

ここで、asm_operands RTX のオペランドは、アセンブラテンプレート文字列、 出力オペランドについての制限子、指定されたオペランドの中での出力オペランド の番号、入力オペランド RTX のベクトル、それに、入力オペランドのモードと 制約のベクトルからなる。モード m1 は、和 x+y のモードであり、 m2 は、*z のモードである。

asm 文に複数の出力値がある場合は、その insn は parallel の 内側に幾つかの set RTX を持つ。 setはそれぞれ asm_operands を含んでいる。 これらの set は全て、同じアセンブラテンプレートとベクトルを 共有しているが、それぞれ出力オペランドに応じた制約を保持している。


This document was generated using texi2html 1.78.