SolarisTM 操作环境的功能为满足用户需求而不断扩展。Solaris 操作环境旨在完全支持 32 位和 64 位体系结构。Solaris 操作环境为可以使用大文件和大虚拟地址空间的 64 位应用程序提供生成和运行环境。与此同时,Solaris 操作环境继续为 32 位应用程序提供最大程度的源代码兼容性、最大程度的二进制兼容性和互操作性。实际上,在 Solaris 64 位实现上运行和生成的大多数系统命令都是 32 位程序。
此 Solaris 发行版支持使用以下 SPARC® 和 x86 系列处理器体系结构的系统:UltraSPARC®、SPARC64、AMD64、Pentium 和 Xeon EM64T。支持的系统可以在 http://www.sun.com/bigadmin/hcl 上的《Solaris 10 Hardware Compatibility List》中找到。本文档列举了在不同类型的平台上进行实现时的所有差别。
在本文档中,术语 "x86" 是指使用与 AMD64 或 Intel Xeon/Pentium 产品系列兼容的处理器生产的 64 位和 32 位系统。若想了解本发行版支持哪些系统,请参见《Solaris 10 Hardware Compatibility List》。
32 位和 64 位应用程序开发环境之间的主要差异在于 32 位应用程序基于 ILP32 数据模型(其中类型为 int、long 的数据和指针是 32 位的),而 64 位应用程序则基于 LP64 模型(其中类型为 long 的数据和指针是 64 位,其他基本类型的长度与在 ILP32 中的长度相同)。
大多数应用程序都可以保留为 32 位程序,并且无需进行任何更改。仅当应用程序具有以下一个或多个要求时,才需要进行转换:
需要 4 GB 以上的虚拟地址空间
使用 libkvm 库、/dev/mem 文件或 /dev/kmem 文件来读取和解释内核内存
使用仅有 64 位版本的库
需要完全 64 位寄存器来执行高效的 64 位运算
对于特定的互操作性问题,还可能需要对代码进行更改。例如,如果应用程序使用大于 2 GB 的文件,则可能需要将应用程序转换为 64 位。
在某些情况下,可能会出于性能方面的原因需要将应用程序转换为 64 位。例如,可能需要 64 位寄存器以执行高效的 64 位运算,或者可能需要利用 64 位指令集所提供的其他提高的性能。
本文档是为 C 和 C++ 开发者编写的,用于指导您如何确定应用程序是 32 位还是 64 位。本文档提供以下内容:
32 位和 64 位应用程序环境之间相似处和差异的列表
有关如何编写可在这两个环境之间移植的代码的说明
有关操作环境所提供的用于开发 64 位应用程序的工具的说明
本书由以下各章组成:
第 1 章,64 位计算介绍 64 位计算的意图并概述 64 位应用程序的优点。
第 2 章,何时使用 64 位说明 Solaris 32 位和 64 位生成环境和运行时环境之间的差异。所编写的信息有助于应用程序开发者确定是否需要将代码转换为对于 64 位安全的代码以及何时进行转换比较适当。
第 3 章,比较 32 位接口和 64 位接口重点介绍 32 位应用程序和 64 位应用程序之间的相似处,还介绍了 64 位接口。
第 4 章,转换应用程序介绍如何将当前的 32 位代码转换为对于 64 位安全的代码,还介绍了可用于使转换更容易的工具。本章重点介绍如何编写可移植代码。此信息适用于转换现有的应用程序或编写在 32 位和 64 位环境中均能运行的新应用程序。
第 5 章,开发环境重点介绍生成环境(包括头文件、编译器和库)、打包指南和调试工具。
第 6 章,高级主题概述 64 位系统编程、ABI 和一些性能问题。
附录 A,派生类型更改 重点介绍许多在 64 位应用程序开发环境中已更改的派生类型。
附录 B,常见问题解答 (Frequently Asked Question, FAQ) 提供有关 64 位实现和应用程序开发环境中最常见问题的答案。
建议进一步阅读以下书籍:
《American National Standard for Information Systems Programming Language - C》,ANSI X3.159-1989
《SPARC Architecture Manual, Version 9》,SPARC International
《SPARC Compliance Definition, Version 2.4》,SPARC International
《Large Files in Solaris: A White Paper》,文件号码:96115-001
《Solaris 10 Reference Manual》
《Writing Device Drivers》,文件号码:816-4854
《Sun Studio 10: C User's Guide》,文件号码:819-0494-10
可以通过 docs.sun.comSM Web 站点联机访问 Sun 技术文档。您可以浏览 docs.sun.com 文档库或查找某个特定的书名或主题。URL 为 http://docs.sun.com。
下表介绍了本书中的印刷约定。
表 P–1 印刷约定
字体或符号 |
含义 |
示例 |
---|---|---|
AaBbCc123 |
命令、文件和目录的名称;计算机屏幕输出 |
编辑 .login 文件。 使用 ls -a 列出所有文件。 machine_name% you have mail. |
AaBbCc123 |
用户键入的内容,与计算机屏幕输出的不同 |
machine_name% su Password: |
AaBbCc123 |
命令行占位符:使用实名或值进行替换 |
要删除文件,请键入 rm filename。 |
AaBbCc123 |
保留未译的新词或术语以及要强调的词 |
这些称为 class 选项。 注意:有些强调的项目在联机时以粗体显示。 |
新词术语强调 |
新词或术语以及要强调的词 |
请勿保存文件。 |
《书名》 |
书名 |
阅读《用户指南》的第 6 章。 |
下表列出了 C shell、Bourne shell 和 Korn shell 的缺省系统提示符和超级用户提示符。
表 P–2 Shell 提示符
Shell |
提示符 |
---|---|
C shell |
machine_name% |
C shell 超级用户 |
machine_name# |
Bourne shell 和 Korn shell |
$ |
Bourne shell 和 Korn shell 超级用户 |
# |
术语 "IA-32" 是指 Intel 32 位处理器体系结构。此体系结构包括 Pentium、Pentium Pro、Pentium II、Pentium II Xeon 和 Pentium III 处理器以及由 AMD 和 Cyrix 制造的兼容微处理器芯片。