Sun Studio 12:C 用户指南

B.2.111 -xmemalign=ab

(SPARC) 指定最大假定内存对齐和未对齐数据访问行为。必须有一个同时用于 a(对齐)和 b(行为)的值。a 指定最大假定内存对齐,b 指定未对齐内存访问行为。下表列出了 -xmemalign 的对齐和行为的值:

表 B–28 -xmemalign 对齐和行为标志

a

 

b

 

1

假定最多 1 字节对齐。 

i

解释访问并继续执行。 

2

假定最多 2 字节对齐。 

s

产生信号 SIGBUS。 

4

假定最多 4 字节对齐。 

f

仅限于 -xarch=v9 变体:

为小于或等于 4 的对齐产生信号 SIGBUS,否则解释访问并继续执行。对于其他所有 -xarch 值,f 标志与 i 等效。

8

假定最多 8 字节对齐。 

   

16

假定最多 16 字节对齐。 

   

如果要链接到某个已编译的目标文件,并且编译该目标文件时 b 的值设置为 if,就必须指定 -xmemalign。有关在编译时和链接时都必须指定的所有编译器选项的完整列表,请参见表 A–2

对于可在编译时确定对齐的内存访问,编译器会为该数据对齐生成适当的装入/存储指令序列。

对于不能在编译时确定对齐的内存访问,编译器必须假定一个对齐以生成所需的装入/存储序列。

-xmemalign 选项允许您在这些未确定情况下指定编译器要假定的数据最大内存对齐。它还指定在运行时发生未对齐内存访问时要执行的错误行为。

以下缺省值仅适用于未使用 -xmemalign 选项时:

在出现 -xmemalign 选项但未给定任何值时,缺省值为:

下表说明了如何使用 -xmemalign 来处理不同的对齐情况。

表 B–29 -xmemalign 示例

命令 

情况 

-xmemalign=1s

大量未对齐访问导致了自陷处理非常缓慢。 

-xmemalign=8i

在发生错误的代码中存在偶然的、有目的的、未对齐访问。 

-xmemalign=8s

程序中应该没有任何未对齐访问。 

-xmemalign=2s

要检查可能存在的奇字节访问。 

-xmemalign=2i

要检查可能存在的奇字节访问并要使程序工作。