当针对 x86 Solaris 平台进行编译时,有几项重要的注意事项。
使用设置为 sse、sse2、sse2a 或 sse3 等的 -xarch 编译的程序必须在支持这些功能和扩展的平台上运行。
从 Solaris 9 4/04 开始的操作系统发行版在 Pentium 4 兼容的平台上支持 SSE/SSE2。早期版本的 Solaris OS 不支持 SSE/SSE2。
如果在不同的步骤中进行编译和链接,请始终使用编译器和相同的 -xarch 设置进行链接,以确保链接正确的启动例程。
x86 上的运算结果可能与 SPARC 上的结果不同,这是由 x86 80 字节浮点寄存器造成的。为了最大限度减少这些差异,请使用 -fstore 选项或使用 -xarch=sse2 进行编译(如果硬件支持 SSE2)。
从 Solaris Studio 11 和 Solaris 10 OS 开始,会对使用这些专用的 -xarch 硬件标志编译和生成的程序二进制文件进行验证,看其是否在相应的平台上运行。
在 Solaris 10 以前的系统上,不进行任何验证,而是由用户负责确保使用这些标志生成的对象已部署在适当的硬件上。
如果在没有相应功能或指令集扩展的平台上运行使用这些 -xarch 选项编译的程序,则可能会导致段故障或不正确的结果,并且不显示任何显式警告消息。
此警告还会扩展到采用 .il 内联汇编语言函数或 __asm() 汇编程序代码(使用 SSE、SSE2、SSE2a 和 SSE3 指令和扩展)的程序。