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...连续的输出操作数。