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参数: