众所周知,asm()是一种将汇编代码放入c代码的方法,但在某些资源中可以说“除非你使用asm('的'long form'',它正确地向编译器声明你的汇编代码的C语言效果,让你自己开放的风险是,不同的编译器版本,不同的编译标志,甚至你的C代码的微小变化可能会产生灾难性的干扰效应。“我想知道asm()的“长形式”是什么?
答案 0 :(得分:5)
“long form”最有可能是GNU Extended Asm,用户可以在其中指定约束,输入,输出寄存器以及clobber列表,以帮助优化编译器进行寄存器分配。
答案 1 :(得分:3)
嵌入式汇编代码的所有使用都受编译器特定细节的限制。包括任何这样的长形式。对于那种事情没有标准。