C/汇编中的双冒号“::”运算符

首先,不,我不是在谈论 C++ 范围解析运算符。

我有以下语法:

asm(
"mov R0,%0n"
"mov R1,%1n"
"mov R3,%2n"
"mov R4,%3n"
"mov R5,%4n"
::"r"(<A_VALUE>),
"r"(<A_VALUE>),
"r"(<A_VALUE>),
"r"(<A_VALUE>),
"r"(<A_VALUE>),
:"r0","r1","r2"
)

冒号和双冒号是什么意思?我确实记得在动态创建变量名时与字符串连接有关。

万提前致谢!

回答

::不是运营商,它是由两个:分离器。有关更多详细信息,请参阅GCC 手册 - 扩展 ASM。

asm asm-qualifiers ( AssemblerTemplate 
                 : OutputOperands 
                 [ : InputOperands
                 [ : Clobbers ] ])

asm asm-qualifiers ( AssemblerTemplate 
                      : OutputOperands
                      : InputOperands
                      : Clobbers
                      : GotoLabels)
asm asm-qualifiers ( AssemblerTemplate 
                 : OutputOperands 
                 [ : InputOperands
                 [ : Clobbers ] ])

asm asm-qualifiers ( AssemblerTemplate 
                      : OutputOperands
                      : InputOperands
                      : Clobbers
                      : GotoLabels)

在您的情况下,您有一个空OutputOperands参数:


以上是C/汇编中的双冒号“::”运算符的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>