0

众所周知 asm() 是一种将汇编代码放入 c 代码的方法,但在某些资源中说“除非你使用 asm() 的‘长形式’,它正确地向编译器声明 C-你的汇编代码的语言效应,你会让自己面临巨大的风险,即不同的编译器版本、不同的编译标志,甚至对你的 C 代码的微小更改都可能产生灾难性的干扰效应。” 我想知道 asm() 的“长格式”是什么?

4

2 回答 2

5

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

于 2012-12-07T09:09:54.567 回答
3

嵌入式汇编代码的所有使用均受编译器特定细节的约束。包括任何如此长的形式。这种事情没有标准。

于 2012-12-07T09:10:30.497 回答