-qasm (-fasm)

适用的调用

表 1. 接受给定选项的调用
选项 xlc (编译 C) xlC (编译 C++) xlclang(编译 C) xlclang++(编译 C++)
-qasm
-fasm    
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表

类别

语言元素控件

等效编译指示

无。

用途

控制汇编语言扩展代码的解释和后续生成。

-qasm 生效时,编译器将为源代码中的组合件语句生成代码。 子选项指定用于解释组合件语句内容的语法。

注: 系统汇编程序必须可用才能使此命令生效。

语法

读取语法图跳过可视语法图  -f asmno-asm

-qasm 语法(针对 C)

读取语法图跳过可视语法图  -q asm=gccnoasm
表 2。 -qasm (for C++) 针对两个类别的调用的语法
xlC 和其他旧调用 xlclang + + 调用命令
读取语法图跳过可视语法图  -qasm(for C++) asm=gccstdcppnoasm
读取语法图跳过可视语法图  -qasm(for C++) asm=gccnoasm

缺省值

基于 XL 的前端开始
  • 仅限 C --qasm =gcc
  • 仅限 C + + -qasm=gcc 所有语言级别,除了 compat366strict98-qnoasm=stdcpp (当 -qlanglvl=compat366-qlanglvl=strict98 生效时)。
基于 XL 的前端端
基于 Clang 的前端开始
  • 仅限 C --qasm =gcc 或 -fasm
  • 仅限 C + + -qasm=gcc
基于 Clang 的前端端

参数

gcc
指示编译器识别组合件语句的扩展 GCC 语法和语义。
基于 XL 的前端开始仅限 C + + stdcpp
保留以供将来使用。

指定不带子选项的 -qasm 等同于指定缺省值。

使用量

仅限 C基于 XL 的前端开始 asm 不是 C 语言的关键字。 因此,在语言级别 stdc89stdc99(分别对 C89 和 C99 标准实施严格合规性) ,还必须指定选项 -qkeyword=asm 以编译生成组合件代码的源。 在其他所有语言级别上,除非启用选项 -qnokeyword=asm ,否则 asm 被视为关键字。基于 XL 的前端端基于 Clang 的前端开始在语言级别上 stdc89stdc99asm 不是关键词。 在其他所有语言级别中, asm 都被视为关键字。基于 Clang 的前端端仅限 C

仅限 C + + 开始 asm、 和 是所有语言版本中的关键词。 __asm __asm__ 基于 XL 的前端开始 -qnokeyword=象征 的子选项可用于单独禁用这些保留字。基于 XL 的前端端仅限 C++ 结束

有关内联 asm 语句的语法和语义的详细信息,请参阅 内联组合件语句

基于 XL 的前端开始

预定义的宏

  • 仅限 C 当 被识别为关键字并生成汇编代码时,__IBM_GCC_ASM被预定义为1;也就是说,在所有语言级别上,除了 asm stdc89 | stdc99或者当 生效时 -qkeyword=asm ,以及当 生效时。 -qasm[=gcc]asm 可识别为关键字但未生成汇编程序代码时 (即,在除 stdc89 | stdc99以外的所有语言级别,或者在 -qkeyword=asm 生效且 -qnoasm 生效时) ,将其预定义为 0。 当 stdc89 | stdc99 语言级别-qnokeyword=asm 生效时,未对其进行定义。
  • 仅限 C + + 当 被识别为关键字并生成汇编代码时,__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; 否则未定义。
基于 XL 的前端端

示例

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

相关信息