| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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.