#pragma reg_killed_by
适用的调用
| 编译指示 (pragma) | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
|---|---|---|---|---|
#pragma reg_killed_by |
✓ | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
用途
指定可由 #pragma mc_func 指定的函数修改的寄存器。
通常,为 #pragma mc_func 指定的函数生成的代码可能会更改系统上可用的任何或所有易失性寄存器。 您可以使用 #pragma reg_killed_by 来显式列出要由此类函数改变的一组特定的易失性寄存器。 不在此列表中的寄存器将不会被改变。
语法
参数
- 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);
}