手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

as (1)

名称

as - 汇编程序

用法概要

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 选项

通用选项

–Dname
–Dname=def

–P 选项生效时,这些选项传递给 cpp(1) 预处理程序,而不用 as 命令进行解释;否则,它们将遭到忽略。

–I path

–P 选项生效时,此选项传递给 cpp(1) 预处理程序,而不用 as 命令进行解释;否则,它将遭到忽略。

–i

指示 as 忽略预处理程序中的行编号信息。

–m

对汇编程序的输入运行 m4(1) 宏处理程序。

–m32|–m64

生成 32 位或 64 位 ELF 格式目标文件代码。

–n

汇编时禁止显示所有警告。

–o  outfile

将汇编的输出放入 outfile。缺省情况下,输出文件名通过删除输入文件名的 .s 后缀(如果有),然后附加 .o 后缀生成。

–P

对汇编的文件运行 cpp(1)(即 C 预处理程序)。预处理程序单独针对每个输入文件(而非它们的组合)运行。预处理程序的输出传递给汇编程序。

–Q[y|n]

如果指定了 y 选项,则它在输出目标文件的注释部分生成“汇编程序版本”信息。如果指定了 n 选项,则禁止生成该信息。

–S[a|b| c|l|A|B| C|L]

将发出代码的反汇编生成到标准输出。将以下每个字符添加到 –S 选项会导致:

a

通过地址反汇编

b

通过 .bof 反汇编

c

通过注释反汇编

l

通过行编号反汇编。

大写字母关闭相应的选项。缺省值为 –Sc

–s

将所有的 stab 放在 .stabs 部分。缺省情况下,stab 放在 stabs.excl 部分中,该部分在最终执行过程中由静态链接程序 ld(1) 删除。当使用 –s 选项时,stab 保留在最终的可执行文件中,因为 .stab 部分不会由静态链接程序删除。

–Uname

–P 选项生效时,此选项传递给 cpp(1) 预处理程序,而不用 as 命令进行解释;否则,它将遭到忽略。

–Ym,path

指定要使用的 m4 版本的路径。

–YI,path

指定搜索 #include 头文件的路径。

SPARC 选项

–hwcap={1|0}

允许 (1) 或禁止 (0) 生成硬件功能部分。缺省情况下生成该部分。

–L

将所有符号(包括通常会丢弃以节省空间的临时标签)保存在 ELF 符号表中。

–ul

将所有未定义的符号视为本地符号。

–Yc,path

指定要使用的 cpp 版本的路径。

–xarch=sparc

允许汇编程序接受 SPARC-V9 体系结构中定义的指令。使用 –m32 汇编时生成的目标文件代码采用 ELF32 格式,使用 –m64 汇编时则采用 ELF64 格式。它不会在 Oracle Solaris V8 系统(具有 V8 处理器的计算机)中执行。它将在 Oracle Solaris V8+ 系统中执行。

–xarch=sparcvis

允许汇编程序接受 SPARC-V9 体系结构中定义的指令,以及 Visual Instruction Set (VIS) 版本 1.0 中的指令。使用 –m32 汇编时生成的目标文件代码采用 V8+ ELF32 格式,使用 –m64 汇编时则采用 ELF64 格式。它不会在具有 V8 处理器的 Oracle Solaris 系统中执行。它将在具有 V8+ 处理器的 Oracle Solaris 系统中执行。

–xarch=sparcvis2

允许汇编程序接受 SPARC-V9 体系结构中定义的指令,以及 Visual Instruction Set (VIS) 版本 2.0(带有 UltraSPARC-III 扩展)中的指令。使用 –m32 汇编时生成的目标文件代码采用 V8+ ELF32 格式,使用 –m64 汇编时则采用 ELF64 格式。

–xarch=sparcvis3

接受为 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。

–xarch=sparcfmaf

接受为 SPARC-V9 ISA 的 sparcfmaf 版本定义的指令,还有 UltraSPARC 扩展(包括 Visual Instruction Set (VIS) 版本 1.0)、UltraSPARC-III 扩展(包括 Visual Instruction Set (VIS) 版本 2.0)以及浮点积和的 SPARC64 VI 扩展。

–xarch=sparcima

接受为 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 扩展。

–xarch=sparc4

接受为 SPARC-V9 ISA 的 sparc4 版本定义的指令,这些指令来自 SPARC-V9 指令集,还有扩展(包括 VIS 1.0)、UltraSPARC-III 扩展(包括 VIS 2.0)、浮点积和熔加指令、VIS 3.0 以及 SPARC4 指令。

–xarch=sparcace

接受为 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 指令。

–xarch=sparcaceplus

接受为 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 指令。

–xarch=v9

相当于:–m64 –xarch=sparc

–xarch=v9a

相当于:–m64 –xarch=sparcvis

–xarch=v9b

相当于:–m64 –xarch=sparcvis2

–xF

生成其他信息以供 Oracle Solaris Studio 性能分析器使用。如果输入文件不包含任何 stab(调试指令),则汇编程序将生成 Oracle Solaris Studio 分析器所需的缺省 stab。另请参见 dbx(1) Oracle Sun Studio 手册页。

x86 选项

–a32

允在在 64 位模式下使用 32 位地址。

–H

生成硬件功能部分。(这是缺省值。)

–nH

禁止生成硬件功能部分。

–KPIC

通过绝对重定位和问题警告检查地址引用。

–xchip=v

当有多种可能的编码可供选择时,请选择适用于所述芯片的编码。特别是,使用适当的 no-op 字节序列来填充代码对齐填充,并在使用未针对所述芯片定义的指令时发出警告。

汇编程序接受以下可识别 –xchip 值的指令集:

generic

通用 x86 指令集。

native

此主机处理器。

core2

Intel Core2 处理器。

nehalem

Intel Nehalem 处理器。

opteron

AMD Opteron 处理器。

penryn

Intel Penryn 处理器。

pentium

Intel Pentium 体系结构。

pentium_pro

Intel Pentium Pro 体系结构。

pentium3

Intel Pentium 3 样式处理器。

pentium4

Intel Pentium 4 样式处理器。

sandybridge

Intel Sandy Bridge 处理器。

westmere

Intel Westmere 处理器。

amdfam10

AMD FAM10 处理器。

ivybridge

Intel Ivy Bridge 处理器。

haswell

Intel Haswell 处理器。

–xmodel=[small | medium | kernel]

仅限 –m64,在 kernel 下生成 R_X86_64_32S 可重定位类型以用于数据访问。否则,在 small 下生成 R_X86_64_32SHN_AMD64_LCOMMON.lbcomm 支持在 medium 下添加。small 为缺省值。

–Yd,path

指定要使用的 cm4defs 版本的路径。

环境变量

环境
TMPDIR

as 通常在 /tmp 目录中创建临时文件。您可以通过将环境变量 TMPDIR 设置为选择的目录来指定其他目录。(如果 TMPDIR 不是有效的目录,则 as 将使用 /tmp)。

文件

缺省情况下,as/tmp 中创建其临时文件。

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/
接口稳定性
Committed(已确定)

另请参见

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 手册页。