#pragma reg_killed_by

适用的调用

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

类别

优化和调整

用途

指定可由 #pragma mc_func 指定的函数修改的寄存器。

通常,为 #pragma mc_func 指定的函数生成的代码可能会更改系统上可用的任何或所有易失性寄存器。 您可以使用 #pragma reg_killed_by 来显式列出要由此类函数改变的一组特定的易失性寄存器。 不在此列表中的寄存器将不会被改变。

语法

读取语法图跳过可视语法图#pragmareg_killed_byfunction ,注册-注册

参数

FUNCTION
先前使用 #pragma mc_func 伪指令定义的函数的名称。
注册
要由指定的 函数更改的单个寄存器或一系列寄存器的符号名称。 符号名称必须是目标平台上的有效注册名称。 有效寄存器为:
cr0, cr1和 cr5 到 cr7
条件寄存器
ctr
计数寄存器
gr0 和 gr3 到 gr12
通用寄存器
fp0 到 fp13
浮点寄存器
fsr
浮点和状态控制寄存器
lr
链接寄存器
vr0 到 vr31
向量寄存器(仅在所选处理器上)
xer
定点异常寄存器

您可以通过提供以短划线分隔的起始和结束寄存器的符号名称来标识一系列寄存器。

如果未指定 register ,那么指定的 function将不会杀死任何易失性寄存器。

示例

以下示例显示如何使用 #pragma reg_killed_by 列出由 #pragma mc_func定义的函数使用的一组特定易失性寄存器。


int add_logical(int, int);
#pragma mc_func add_logical {"7c632014" "7c630194"}
                /*   addc       r3 <- r3, r4           */
                /*   addze      r3 <- r3, carry bit    */

#pragma reg_killed_by add_logical gr3, xer
                /* only gpr3 and the xer are altered by this function */


main() {

      int i,j,k;

      i = 4;
      k = -4;
      j = add_logical(i,k);
      printf("\n\nresult = %d\n\n",j);
}

相关信息