是一个「;asm宏“;标准C的一部分?

是一个「;asm宏“;标准C的一部分?,c,embedded,C,Embedded,我们为嵌入式PowerPC体系结构开发代码 我们的编译器支持asm宏 以下是手册的摘录: asm宏语法 asm宏定义看起来很像函数定义,包括返回类型和参数列表以及函数体 语法是: asm [volatile] [return-type] macro-name ( [ parameter-list ] ) { % storage-mode-list (must start in column 1) ! register-list (“!” must be first non-whit

我们为嵌入式PowerPC体系结构开发代码

我们的编译器支持asm宏

以下是手册的摘录:

asm宏语法

asm宏定义看起来很像函数定义,包括返回类型和参数列表以及函数体

语法是:

asm [volatile] [return-type] macro-name ( [ parameter-list ] )
 {
 % storage-mode-list (must start in column 1)
 ! register-list     (“!” must be first non-whitespace)
   asm-code      
 } (must start in column 1
这是标准C吗?我的编译器在他的手册中没有将此列为扩展

第一次答复后的澄清:


我知道带有en
{}
的零件不是标准C定义的。我指的是在
asm
之后和关闭
之前的函数类构造。
不,它不是标准C。任何特定于体系结构的东西,比如汇编代码,定义是一个具体的扩展,

< P> <代码> ASM< /Cord>关键字在C中不是标准的,它是用C++保留的,但是在这两种情况下,语法都是具体描述的:

ASM声明提供了在C++程序中嵌入汇编语言源代码的能力。此声明是有条件支持的,并由实现定义,这意味着它可能不存在,即使由实现提供,也没有固定的含义


它的使用定义了一个宏是新的,但有趣的是

哦,对不起,也许我应该说得更准确些。我知道C++中的部分{汇编程序或类似的} /代码>不是由标准C定义的。我的意思是整个函数像构造。不,也没有任何标准。语法不是C++中定义的实现。标准(C++037.4)将内联asm的实际语法指定为
asm“NOP”没有其他内容。实现定义的部分只是引号内的实际程序集,在本例中是NOP指令。@Lundin:很好,尽管定义的语法没有涵盖问题中的语法,也没有涵盖GCC中的输入/输出/克隆器规范语法,历史上很少有标准化——我的建议是,编译器应该有所不同。VC++使用了
\uu asm
引入的不同语法,这是非标准编译器扩展的更正确形式。