Sun Studio 12:Fortran 用户指南

3.4.171 –xregs= r

指定寄存器的用法

r 是一个逗号分隔列表,它包含以下一项或多项:

[no%]appl 和 [no%]float

其中 % 已显示,它是一个必需的字符。

示例:-xregs=appl,no%float

为子选项加上前缀 no% 可禁用该功能。

appl

(SPARC) 允许编译器将应用寄存器用作临时寄存器来生成代码。在 32 位处理器上具有 g2、g3g4 寄存器,在 64 位处理器上则具有 g2、g3 寄存器。

float

(仅限 SPARC)允许编译器将浮点寄存器用作整数值的临时寄存器。此选项不会影响编译器为浮点值使用浮点寄存器。

no%float

不使用浮点寄存器。使用此选项时,源程序不能包含任何浮点代码。

frameptr

(仅限 x86)允许编译器将帧指针寄存器(在 32 位 x86 处理器上为 %ebp,在 64 位 x86 处理器上为 %rbp)用作未分配的被调用方保存寄存器,以提高程序性能。如果还使用 -xpg-p 进行编译,则会忽略 -xregs=frameptr

在 SPARC 平台上缺省值为 -xregs=appl,float,在 x86 上缺省值为 -xregs=appl,float,no%frameptr

对于与应用程序链接的共享库,强烈建议您使用 -xregs=no%appl,float 来编译用于这些库的代码。至少共享库应该显式说明它如何使用应用程序寄存器,以便与这些库链接的应用程序知道如何处理该问题。

例如,在某种全局意义上使用寄存器(例如,使用寄存器指向一些关键数据结构)的应用程序,需要确切地知道其代码未使用 -xregs=no%appl 编译的某个库如何使用应用程序寄存器,以便安全地与该库链接。