Oracle Solaris Studio 12.4 Man Pages

Exit Print View

Updated: January 2015
 
 

fbe(1)

Name

fbe - 汇编程序

Synopsis

SPARC

fbe [ -hwcap={1|0} ] [ -L ] [ -m ] [ -m32 ] [ -m64 ] [ -n ] [ -o outfile ] [ -ul ] [ -P ] [ -Dname ] [ -Dname=def ] [ -Ipath ] [ -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

fbe [ -a32 ] [ -m ] [ -m32 ] [ -m64 ] [ -n ] [ -H ] [ -nH ] [ -o outfile ] [ -P ] [ -Dname ] [ -Dname=def ] [ -Ipath ] [ -Uname...] [ -KPIC ] [ -Q[y|n] ] [ -remove_empty_sect ] [ -s ] [ -S[a|b|c|l|A|B|C|L]] [ -V ] [ -xchip=v ] [ -xmodel=[a] ] [ -Y[m|d],path ] [ -YI,path ] filename... 

可用性

可用性

SPROlang

Description

fbe 命令基于汇编语言源文件创建对象文件。

Options

通用选项

以下标志对于 SPARC 和 x86 通用。能以任意顺序指定它们。

-Dname
-Dname=def

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

-Ipath

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

-i

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

-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) 预处理程序,而不用 fbe 命令进行解释;否则,它将遭到忽略。

-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=sparc4b

允许编译器使用 SPARC-V9 指令集、UltraSPARC 扩展(包括 VIS 1.0)、UltraSPARC-III 扩展(包括 VIS2.0)、面向浮点乘加的 SPARC64 VI 扩展、面向整数乘加的 SPARC64 VII 扩展中的指令以及 SPARC T4 扩展中的 PAUSE 和 CBCOND 指令。

-xarch=sparc4c

允许编译器使用 SPARC-V9 指令集、UltraSPARC 扩展(包括 VIS 1.0)、UltraSPARC-III 扩展(包括 VIS2.0)、面向浮点乘加的 SPARC64 VI 扩展、面向整数乘加的 SPARC64 VII 扩展、VIS 3.0 指令的 VIS3B 子集、SPARC T3 扩展的子集中的指令以及 SPARC T4 扩展中的 PAUSE 和 CBCOND 指令。

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

x86 选项

-a32

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

-H

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

-nH

禁止生成硬件功能部分。

-KPIC

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

-remove_empty_sect

如果以下部分为空,会将其删除:.bss.bssf.lbss.data.rodata.ldata.lrodata.picdata

-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_32。SHN_AMD64_LCOMMON 和 .lbcomm 支持在 medium 下添加。small 为缺省值。

-Yd,path

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

Environment Variables

TMPDIR

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

Files

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

See also

cc (1) 、 cpp (1) 、 dbx (1) 、 ld (1) 、 m4 (1) 、 nm (1) 、 strip (1) 、 tmpnam (3C) 、 a.out (4) 、 attributes (5)

Notes

在 SPARC 平台中,cpp 符号 __sparc 在显示 -P 标志时设置、__sparcv8 在显示 -m32 标志时设置,而 __sparcv9 则在显示 -m64 标志时设置。

在 x86/x64 中,符号 __i386 在显示 -P 标志时设置,而 __amd64 则在显示 -m64 标志时设置。

如果使用了 -m(调用 m4(1) 宏处理程序)选项,则 m4(1) 的关键字无法用作输入文件中的符号(变量、函数、标签),因为 m4(1) 无法确定哪些关键字是汇编程序符号,哪些关键字是实际的 m4(1) 宏。

如果可以,您应该通过编译系统接口程序(例如 Oracle Solaris Studio C 编译器 cc (1) )访问汇编程序以确保库链接正确。

将所有未定义的符号视为全局符号。