SPARC
as [ -hwcap={1|0} ] [ -L ] [ -m ] [ -m32 ] [ -m64 ] [ -n ] [ -o outfile ] [ -ul ] [ -P ] [ -Dname ] [ -D name=def ] [ -I path ] [ -Uname.... ] [ -Q[y|n] ] [ -s ] [ -S[a|b|c|l|A|B|C|L]] [ -V ] [ -xarch=v ] [ -xF ] [ -Y[m|c],path ] [ -YI,path ] filename...
x86
as [ -a32 ] [ -m ] [ -m32 ] [ -m64 ] [ -n ] [ -H ] [ -nH ] [ -o outfile ] [ -P ] [ -Dname ] [ -Dname=def ] [ -Ipath ] [ -Uname.... ] [ -KPIC ] [ -Q[y|n] ] [ -s ] [ -S[a|b|c|l|A|B|C|L]] [ -V ] [ -xchip=v ] [ -xmodel =[a] ] [ -Y[m|d],path ] [ -YI ,path ] filename...
as 命令基于汇编语言源文件创建目标文件。
本节分为三部分:
通用选项(SPARC 和 x86 通用的选项)
SPARC 选项
x86 选项
当 –P 选项生效时,这些选项传递给 cpp(1) 预处理程序,而不用 as 命令进行解释;否则,它们将遭到忽略。
当 –P 选项生效时,此选项传递给 cpp(1) 预处理程序,而不用 as 命令进行解释;否则,它将遭到忽略。
指示 as 忽略预处理程序中的行编号信息。
对汇编程序的输入运行 m4(1) 宏处理程序。
生成 32 位或 64 位 ELF 格式目标文件代码。
汇编时禁止显示所有警告。
将汇编的输出放入 outfile。缺省情况下,输出文件名通过删除输入文件名的 .s 后缀(如果有),然后附加 .o 后缀生成。
对汇编的文件运行 cpp(1)(即 C 预处理程序)。预处理程序单独针对每个输入文件(而非它们的组合)运行。预处理程序的输出传递给汇编程序。
如果指定了 y 选项,则它在输出目标文件的注释部分生成“汇编程序版本”信息。如果指定了 n 选项,则禁止生成该信息。
将发出代码的反汇编生成到标准输出。将以下每个字符添加到 –S 选项会导致:
通过地址反汇编
通过 .bof 反汇编
通过注释反汇编
通过行编号反汇编。
大写字母关闭相应的选项。缺省值为 –Sc。
将所有的 stab 放在 .stabs 部分。缺省情况下,stab 放在 stabs.excl 部分中,该部分在最终执行过程中由静态链接程序 ld(1) 删除。当使用 –s 选项时,stab 保留在最终的可执行文件中,因为 .stab 部分不会由静态链接程序删除。
当 –P 选项生效时,此选项传递给 cpp(1) 预处理程序,而不用 as 命令进行解释;否则,它将遭到忽略。
指定要使用的 m4 版本的路径。
指定搜索 #include 头文件的路径。
允许 (1) 或禁止 (0) 生成硬件功能部分。缺省情况下生成该部分。
将所有符号(包括通常会丢弃以节省空间的临时标签)保存在 ELF 符号表中。
将所有未定义的符号视为本地符号。
指定要使用的 cpp 版本的路径。
允许汇编程序接受 SPARC-V9 体系结构中定义的指令。使用 –m32 汇编时生成的目标文件代码采用 ELF32 格式,使用 –m64 汇编时则采用 ELF64 格式。它不会在 Oracle Solaris V8 系统(具有 V8 处理器的计算机)中执行。它将在 Oracle Solaris V8+ 系统中执行。
允许汇编程序接受 SPARC-V9 体系结构中定义的指令,以及 Visual Instruction Set (VIS) 版本 1.0 中的指令。使用 –m32 汇编时生成的目标文件代码采用 V8+ ELF32 格式,使用 –m64 汇编时则采用 ELF64 格式。它不会在具有 V8 处理器的 Oracle Solaris 系统中执行。它将在具有 V8+ 处理器的 Oracle Solaris 系统中执行。
允许汇编程序接受 SPARC-V9 体系结构中定义的指令,以及 Visual Instruction Set (VIS) 版本 2.0(带有 UltraSPARC-III 扩展)中的指令。使用 –m32 汇编时生成的目标文件代码采用 V8+ ELF32 格式,使用 –m64 汇编时则采用 ELF64 格式。
接受为 SPARC-V9 ISA 的 SPARC VIS 版本 3 定义的指令,这些是来自 SPARC-V9 指令集中的指令,还有 UltraSPARC 扩展(包括 Visual Instruction Set (VIS) 版本 1.0)、UltraSPARC-III 扩展(包括 Visual Instruction Set (VIS) 版本 2.0)、积和熔加指令以及 Visual Instruction Set (VIS) 版本 3.0。
接受为 SPARC-V9 ISA 的 sparcfmaf 版本定义的指令,还有 UltraSPARC 扩展(包括 Visual Instruction Set (VIS) 版本 1.0)、UltraSPARC-III 扩展(包括 Visual Instruction Set (VIS) 版本 2.0)以及浮点积和的 SPARC64 VI 扩展。
接受为 SPARC-V9 ISA 的 sparcima 版本定义的指令,这些是来自 SPARC-V9 指令集的指令,还有 UltraSPARC 扩展(包括 Visual Instruction Set (VIS) 版本 1.0)、UltraSPARC-III 扩展(包括 Visual Instruction Set (VIS) 版本 2.0)、浮点积和的 SPARC64 VI 扩展以及整数积和的 SPARC64 VII 扩展。
接受为 SPARC-V9 ISA 的 sparc4 版本定义的指令,这些指令来自 SPARC-V9 指令集,还有扩展(包括 VIS 1.0)、UltraSPARC-III 扩展(包括 VIS 2.0)、浮点积和熔加指令、VIS 3.0 以及 SPARC4 指令。
接受为 SPARC-V9 ISA 的 sparcace 版本定义的指令,这些是来自 SPARC-V9 指令集的指令,还有 UltraSPARC 扩展(包括 Visual Instruction Set (VIS) 版本 1.0)、UltraSPARC-III 扩展(包括 Visual Instruction Set (VIS) 版本 2.0)、浮点积和的 SPARC64 VI 扩展、整数积和的 SPARC64 VII 扩展以及 SPARCACE 指令。
接受为 SPARC-V9 ISA 的 sparcaceplus 版本定义的指令,这些是来自 SPARC-V9 指令集的指令,还有 UltraSPARC 扩展(包括 Visual Instruction Set (VIS) 版本 1.0)、UltraSPARC-III 扩展(包括 Visual Instruction Set (VIS) 版本 2.0)、浮点积和的 SPARC64 VI 扩展、整数积和的 SPARC64 VII 扩展、SPARCACE 以及 SPARCACEPLUS 指令。
相当于:–m64 –xarch=sparc
相当于:–m64 –xarch=sparcvis
相当于:–m64 –xarch=sparcvis2
生成其他信息以供 Oracle Solaris Studio 性能分析器使用。如果输入文件不包含任何 stab(调试指令),则汇编程序将生成 Oracle Solaris Studio 分析器所需的缺省 stab。另请参见 dbx(1) Oracle Sun Studio 手册页。
允在在 64 位模式下使用 32 位地址。
生成硬件功能部分。(这是缺省值。)
禁止生成硬件功能部分。
通过绝对重定位和问题警告检查地址引用。
当有多种可能的编码可供选择时,请选择适用于所述芯片的编码。特别是,使用适当的 no-op 字节序列来填充代码对齐填充,并在使用未针对所述芯片定义的指令时发出警告。
汇编程序接受以下可识别 –xchip 值的指令集:
通用 x86 指令集。
此主机处理器。
Intel Core2 处理器。
Intel Nehalem 处理器。
AMD Opteron 处理器。
Intel Penryn 处理器。
Intel Pentium 体系结构。
Intel Pentium Pro 体系结构。
Intel Pentium 3 样式处理器。
Intel Pentium 4 样式处理器。
Intel Sandy Bridge 处理器。
Intel Westmere 处理器。
AMD FAM10 处理器。
Intel Ivy Bridge 处理器。
Intel Haswell 处理器。
仅限 –m64,在 kernel 下生成 R_X86_64_32S 可重定位类型以用于数据访问。否则,在 small 下生成 R_X86_64_32。SHN_AMD64_LCOMMON 和 .lbcomm 支持在 medium 下添加。small 为缺省值。
指定要使用的 cm4defs 版本的路径。
as 通常在 /tmp 目录中创建临时文件。您可以通过将环境变量 TMPDIR 设置为选择的目录来指定其他目录。(如果 TMPDIR 不是有效的目录,则 as 将使用 /tmp)。
缺省情况下,as 在 /tmp 中创建其临时文件。
有关下列属性的说明,请参见 attributes(5):
|
cpp(1)、ld(1)、m4(1)、nm(1)、strip(1)、tmpnam(3C)、a.out(4)、attributes(5)
在 SPARC 平台中,cpp 符号 __sparc 在显示 –P 标志时设置、__sparcv8 在显示 –m32 标志时设置,而 __sparcv9 则在显示 –m64 标志时设置。
在 x86/x64 中,符号 __i386 在显示 –P 标志时设置,而 __amd64 则在显示 –m64 标志时设置。
如果使用了 –m(调用 m4(1) 宏处理程序)选项,则 m4 的关键字无法用作输入文件中的符号(变量、函数、标签),因为 m4 无法确定哪些关键字是汇编程序符号,哪些关键字是实际的 m4 宏。
如果可以,您应该通过编译系统接口程序(例如 Oracle Solaris Studio C 编译器 cc)访问汇编程序以确保库链接正确。请参见 cc(1) Oracle Solaris Studio 手册页。