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...
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
fbe 命令基于汇编语言源文件创建对象文件。
以下标志对于 SPARC 和 x86 通用。能以任意顺序指定它们。
当 -P 选项生效时,这些选项传递给 cpp (1) 预处理程序,而不用 fbe 命令进行解释;否则,它们将遭到忽略。
当 -P 选项生效时,此选项传递给 cpp (1) 预处理程序,而不用 fbe 命令进行解释;否则,它将遭到忽略。
指示 fbe 忽略预处理程序中的行号信息。
对汇编程序的输入运行 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) 预处理程序,而不用 fbe 命令进行解释;否则,它将遭到忽略。
指定要使用的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 指令集、UltraSPARC 扩展(包括 VIS 1.0)、UltraSPARC-III 扩展(包括 VIS2.0)、面向浮点乘加的 SPARC64 VI 扩展、面向整数乘加的 SPARC64 VII 扩展中的指令以及 SPARC T4 扩展中的 PAUSE 和 CBCOND 指令。
允许编译器使用 SPARC-V9 指令集、UltraSPARC 扩展(包括 VIS 1.0)、UltraSPARC-III 扩展(包括 VIS2.0)、面向浮点乘加的 SPARC64 VI 扩展、面向整数乘加的 SPARC64 VII 扩展、VIS 3.0 指令的 VIS3B 子集、SPARC T3 扩展的子集中的指令以及 SPARC T4 扩展中的 PAUSE 和 CBCOND 指令。
接受为 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) 手册页。
允在在 64 位模式下使用 32 位地址。
生成硬件功能部分。(缺省值)
禁止生成硬件功能部分。
通过绝对重定位和问题警告检查地址引用。
如果以下部分为空,会将其删除:.bss、.bssf、.lbss、.data、.rodata、.ldata、.lrodata 和 .picdata。
当有多种可能的编码可供选择时,请选择适用于所述芯片的编码。特别是,使用适当的 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版本的路径。
fbe 通常在 /tmp 目录中创建临时文件。您可以通过将环境变量 TMPDIR 设置为选择的目录来指定其他目录。(如果 TMPDIR 不是有效的目录,则 fbe 将使用 /tmp)。
缺省情况下,fbe 在 /tmp 中创建其临时文件。
cc (1) 、 cpp (1) 、 dbx (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(1) 的关键字无法用作输入文件中的符号(变量、函数、标签),因为 m4(1) 无法确定哪些关键字是汇编程序符号,哪些关键字是实际的 m4(1) 宏。
如果可以,您应该通过编译系统接口程序(例如 Oracle Solaris Studio C 编译器 cc (1) )访问汇编程序以确保库链接正确。
将所有未定义的符号视为全局符号。