Next: Debug Information, Previous: Incdec, Up: RTL
RTX代码asm_operands
表示由用户特定的汇编指令所产生的值。其用来表示带有参数的asm
语句。一个具有单个输出操作数的asm
语句,如下:
asm ("foo %1,%2,%0" : "=a" (outputvar) : "g" (x + y), "di" (*z));
其通过一个单个的asm_operands
RTX来表示,其表示了存储在outputvar
中的值:
(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具有多个这样的set
RTX,并位于一个parallel
中。每个set
包括了一个asm_operands
;所有这些共享相同的汇编模板和向量,但是每个包含了相应的输出操作数的约束。它们也是通过输出操作数索引编号来区分的,即0,1...连续的输出操作数。