什么是asm()的“长形式”?

时间:2012-12-07 09:07:51

标签: c assembly

众所周知,asm()是一种将汇编代码放入c代码的方法,但在某些资源中可以说“除非你使用asm('的'long form'',它正确地向编译器声明你的汇编代码的C语言效果,让你自己开放的风险是,不同的编译器版本,不同的编译标志,甚至你的C代码的微小变化可能会产生灾难性的干扰效应。“我想知道asm()的“长形式”是什么?

2 个答案:

答案 0 :(得分:5)

“long form”最有可能是GNU Extended Asm,用户可以在其中指定约束,输入,输出寄存器以及clobber列表,以帮助优化编译器进行寄存器分配。

答案 1 :(得分:3)

嵌入式汇编代码的所有使用都受编译器特定细节的限制。包括任何这样的长形式。对于那种事情没有标准。