-qasm (-fasm)
适用的调用
选项 | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
---|---|---|---|---|
-qasm | ✓ | ✓ | ✓ | ✓ |
-fasm | ✓ | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
等效编译指示
无。
用途
控制汇编语言扩展代码的解释和后续生成。
当 -qasm 生效时,编译器将为源代码中的组合件语句生成代码。 子选项指定用于解释组合件语句内容的语法。
注: 系统汇编程序必须可用才能使此命令生效。
语法
缺省值

--qasm =gcc
-qasm=gcc 所有语言级别,除了 compat366 或 strict98。 -qnoasm=stdcpp (当 -qlanglvl=compat366 或 -qlanglvl=strict98 生效时)。


--qasm =gcc 或 -fasm
-qasm=gcc

参数
- gcc
- 指示编译器识别组合件语句的扩展 GCC 语法和语义。
stdcpp
- 保留以供将来使用。
指定不带子选项的 -qasm 等同于指定缺省值。
使用量
asm
不是 C 语言的关键字。 因此,在语言级别 stdc89 和 stdc99(分别对 C89 和 C99 标准实施严格合规性) ,还必须指定选项 -qkeyword=asm 以编译生成组合件代码的源。 在其他所有语言级别上,除非启用选项 -qnokeyword=asm ,否则 asm
被视为关键字。在语言级别上 stdc89 和 stdc99 ,
asm
不是关键词。 在其他所有语言级别中, asm
都被视为关键字。
asm
、 和 是所有语言版本中的关键词。 __asm
__asm__
-qnokeyword=象征 的子选项可用于单独禁用这些保留字。
有关内联 asm
语句的语法和语义的详细信息,请参阅 内联组合件语句。

预定义的宏
当 被识别为关键字并生成汇编代码时,__IBM_GCC_ASM被预定义为1;也就是说,在所有语言级别上,除了
asm
stdc89 | stdc99 , 或者当 生效时 -qkeyword=asm ,以及当 生效时。 -qasm[=gcc] 当asm
可识别为关键字但未生成汇编程序代码时 (即,在除 stdc89 | stdc99以外的所有语言级别,或者在 -qkeyword=asm 生效且 -qnoasm 生效时) ,将其预定义为 0。 当 stdc89 | stdc99 语言级别 或 -qnokeyword=asm 生效时,未对其进行定义。当 被识别为关键字并生成汇编代码时,__IBM_GCC_ASM被预定义为1;也就是说,在所有语言级别上,
asm
除了 compat366 | strict98 ,以及当 生效时。 -qasm[=gcc] 当asm
识别为关键字但未生成汇编程序代码时 (即,在所有语言级别 , compat366|strict98除外) ,以及 -qnoasm 生效时,会将其预定义为 0。 在 -qlanglvl=compat366 | strict98 或 -qnoasm=stdcpp 生效时未对其进行定义。 当 -qlanglvl=compat366 | strict98 或 -qnoasm=stdcpp 生效时, __IBM_STDCPP_ASM 预定义为 0; 否则未定义。

示例
以下代码片段显示了内联语句中
asm
语法的 GCC 约定示例:int a, b, c;
int main() {
asm("add %0, %1, %2" : "=r"(a) : "r"(b), "r"(c) );
}