内联汇编的两种形式

时间:2018-11-21 11:55:48

标签: c assembly language-lawyer inline-assembly

内联汇编有两种形式,一种是

asm{
    //...
}

另一个

asm(
    "..."//work in my clang compiler
);

和__asm等,那么有什么区别? 我希望不仅仅是花括号和括号,

2 个答案:

答案 0 :(得分:3)

C语言不支持嵌入式汇编程序,因此任何一种形式都是非标准的。每个编译器往往会以不同的方式执行此操作,因此语法会有所不同。

即使在C标准模式下进行编译,某些编译器也使用双下划线__来允许所有非标准关键字。

与C不同,C ++确实通过asm("instruction");形式的标准化来支持它。

答案 1 :(得分:0)

C标准的附录J内容丰富,并指出如果支持asm(不一定是),则它应该采用以下形式

asm ( character-string-literal );

换句话说,使用括号的表示法可能不如使用括号的表示法那么常见。

(C ++的要求更高。)