汇编器AS命令行用法

本文详细介绍了GNU汇编器as的各种选项,包括基本概念、目标平台支持(如ARM和i386)、汇编码格式、调试信息生成、编译参数和兼容性注意事项。还提到了与gcc和ld等工具的交互以及使用中的常见操作和警告处理。
摘要由CSDN通过智能技术生成


汇编器:将汇编语言翻译为机器目标代码的程序。
全称assembler.
assemb是组装的意思。

常用的两种汇编器:

as和nasm

汇编码格式

AT&T

as(1) - Linux 手册页

名字

AS - 可移植的 GNU 汇编程序。

概要(重要)

       as [-a[cdghlns][=file]] [--alternate] [-D]
        [--compress-debug-sections]  [--nocompress-debug-sections]
        [--debug-prefix-map old=new]
        [--defsym sym=val] [-f] [-g] [--gstabs]
        [--gstabs+] [--gdwarf-<N>] [--gdwarf-sections]
        [--gdwarf-cie-version=VERSION]
        [--help] [-I dir] [-J]
        [-K] [-L] [--listing-lhs-width=NUM]
        [--listing-lhs-width2=NUM] [--listing-rhs-width=NUM]
        [--listing-cont-lines=NUM] [--keep-locals]
        [--no-pad-sections]
        [-o objfile] [-R]
        [--hash-size=NUM] [--reduce-memory-overheads]
        [--statistics]
        [-v] [-version] [--version]
        [-W] [--warn] [--fatal-warnings] [-w] [-x]
        [-Z] [@FILE]
        [--sectname-subst] [--size-check=[error|warning]]
        [--elf-stt-common=[no|yes]]
        [--generate-missing-build-notes=[no|yes]]
        [--target-help] [target-options]
        [--|files ...]

目标 ARM 选项:

       Target ARM options:
          [-mcpu=processor[+extension...]]
          [-march=architecture[+extension...]]
          [-mfpu=floating-point-format]
          [-mfloat-abi=abi]
          [-meabi=ver]
          [-mthumb]
          [-EB|-EL]
          [-mapcs-32|-mapcs-26|-mapcs-float|
           -mapcs-reentrant]
          [-mthumb-interwork] [-k]

目标 i386 选项:

       Target i386 options:
          [--32|--x32|--64] [-n]
          [-march=CPU[+EXTENSION...]] [-mtune=CPU]

as --32:32位x86架构汇编
as --64:64位x86架构汇编

注:as针对不同的架构有不同的使用参数。本文只以i386(intel x86)为例进行描述。

描述(不重要)

GNU as实际上是一个汇编程序家族(汇编和平台CPU硬件架构强相关)。如果你在一个架构上使用(或曾经使用过)GNU汇编器,你应该 当您在另一个体系结构上使用它时,请找到一个非常相似的环境。每个版本都与其他版本有很多共同点,包括大多数对象文件格式 汇编程序指令(通常称为伪操作)和汇编程序语法。

主要用于组装(assemble ) GNU C 编译器“gcc”的输出,供链接器“ld”使用。 尽管如此,我们还是试图正确地组装同一台机器的其他装配工组装的所有东西。任何例外情况是 明确记录。这并不意味着一如既往地使用与同一体系结构的另一个汇编程序相同的语法;例如,我们知道几个 680x0 汇编语言语法的不兼容版本。

每次运行时,它都会组装一个源程序。源程序由一个或多个文件组成。(标准输入也是 文件。)

作为具有零个或多个输入文件名的命令行提供。读取输入文件(从左文件名到右文件名)。命令行参数 (在任何位置)没有特殊含义的都被视为输入文件名。

如果您没有提供文件名,它会尝试从标准输入(通常是您的终端)中读取一个输入文件。您可能需要 键入 ctl-D 来告诉,因为没有更多的程序需要组装。

如果需要在命令行中显式命名标准输入文件,请使用 --

如果源为空,则生成一个小的空目标文件。

可能会将警告和错误消息写入标准错误文件(通常是您的终端)。当编译器自动运行时,不应发生这种情况。警告报告一个假设,以便可以继续组装有缺陷的程序;错误报告一个严重的问题,该问题会阻止 集会。

如果通过 GNU C 编译器进行调用,则可以使用 -Wa 选项将参数传递给汇编程序。这 汇编程序参数必须用逗号彼此分隔(以及 -Wa)。例如:

gcc -c -g -O -Wa,-alh,-L file.c

这会将两个选项传递给汇编程序:-alh(使用高级和汇编源代码向标准输出发出列表)和 -L(保留本地 符号表中的符号)。
通常不需要使用这种 -Wa 机制,因为许多编译器命令行选项是由 编译器自动传递给汇编器。(您可以使用 -v 选项调用 GNU 编译器驱动程序,以精确地查看它传递给每个编译阶段的选项, 包括汇编器。

选项

@file
	从文件中读取命令行选项。读取的选项将插入以代替原始的 @file 选项。如果文件不存在,或者 无法读取,则该选项将按字面意思处理,而不是删除。
	文件中的选项用空格分隔。空格字符可以包含在选项中,方法是将整个选项括起来,或者 双引号。任何字符(包括反斜杠)都可以通过在要包含的字符前加上反斜杠来包含。文件本身可能 包含其他 @file 选项;任何此类选项都将以递归方式处理。
-a[cdghlmns]
	通过多种方式开启listings:
	-ac 省略假条件
	-ad	省略调试指令
	-ag	包括常规信息,例如传递的版本和选项
	-ah	包括高级源
	-al 包括程序集
	-am	包括宏扩展
	-an	省略表单处理
	-as 包含符号
	=file	设置列表文件的名称
	您可以组合这些选项;例如,将 -aln 用于程序集列表,而无需表单处理。如果使用 =file 选项,则必须是 最后一个。就其本身而言,-a 默认为 -ahls。
--alternate
	以交替宏模式开始。
-D
	忽视。接受此选项是为了与对其他汇编程序的调用的脚本兼容。
--debug-prefix-map old=new
	在旧目录中组装文件时,请记录调试信息,将其描述为新目录。
--defsym sym=value
	在组装输入文件之前,将符号符号定义为值。value 必须是整数常量。与 C 一样,前导 0x 表示十六进制值,前导 0 表示八进制值。通过使用“.set”伪操作,可以在源文件中覆盖符号的值。
-f
	“fast”---跳过空格和注释预处理(假设源是编译器输出)。
-g
--gen-debug
	使用目标首选的调试格式为每个汇编程序源代码行生成调试信息。这目前意味着 STABS , ECOFF 或 DWARF2 。
--gstabs
	为每个汇编程序行生成 stabs 调试信息。如果调试器可以处理汇编程序代码,这可能有助于调试汇编程序代码。
--gstabs+
	为每个汇编程序行生成 stabs 调试信息,使用 GNU 扩展,可能只有 gdb 才能处理,并且可以使 其他调试器崩溃或拒绝读取您的程序。这可能有助于调试汇编程序代码。目前唯一的 GNU 扩展是位置 组装时的当前工作目录。
--gdwarf-2
	为每条汇编线生成 DWARF2 调试信息。如果调试器可以处理汇编程序代码,这可能有助于调试汇编程序代码。 注意---此选项仅受某些目标支持,而不是所有目标。
       --gdwarf-3
           This option is the same as the --gdwarf-2 option, except that it allows for the possibility of the generation of extra debug information as per version 3 of the DWARF specification.  Note - enabling this option does not guarantee the generation of any extra
           infortmation, the choice to do so is on a per target basis.

       --gdwarf-4
           This option is the same as the --gdwarf-2 option, except that it allows for the possibility of the generation of extra debug information as per version 4 of the DWARF specification.  Note - enabling this option does not guarantee the generation of any extra
           infortmation, the choice to do so is on a per target basis.

       --gdwarf-5
           This option is the same as the --gdwarf-2 option, except that it allows for the possibility of the generation of extra debug information as per version 5 of the DWARF specification.  Note - enabling this option does not guarantee the generation of any extra
           infortmation, the choice to do so is on a per target basis.

       --gdwarf-sections
           Instead of creating a .debug_line section, create a series of .debug_line.foo sections where foo is the name of the corresponding code section.  For example a code section called .text.func will have its dwarf line number information placed into a section called
           .debug_line.text.func.  If the code section is just called .text then debug line section will still be called just .debug_line without any suffix.

       --gdwarf-cie-version=version
           Control which version of DWARF Common Information Entries (CIEs) are produced.  When this flag is not specificed the default is version 1, though some targets can modify this default.  Other possible values for version are 3 or 4.

       --size-check=error
       --size-check=warning
           Issue an error or warning for invalid ELF .size directive.

       --elf-stt-common=no
       --elf-stt-common=yes
           These options control whether the ELF assembler should generate common symbols with the "STT_COMMON" type.  The default can be controlled by a configure option --enable-elf-stt-common.

       --generate-missing-build-notes=yes
       --generate-missing-build-notes=no
           These options control whether the ELF assembler should generate GNU Build attribute notes if none are present in the input sources.  The default can be controlled by the --enable-generate-build-notes configure option.

--help
	打印命令行选项的摘要并退出。
--target-help
	打印所有目标特定选项的摘要并退出。
-I dir
	将目录dir添加到搜索列表中以查找“.include”指令。
-J
	不要警告有符号溢出。
-K

	当差值表因长位移而改变时发出警告。
-L
--keep-locals
	保留(在符号表中)本地符号。这些符号以特定于系统的本地标签前缀开头,通常为 。L 代表 ELF 系统 或 L 表示传统的 a.out 系统。
--listing-lhs-width=number
	将汇编程序列表的输出数据列的最大宽度(以字为单位)设置为 number。
--listing-lhs-width2=number
	将汇编程序列表中连续行的输出数据列的最大宽度(以字为单位)设置为 number。
--listing-rhs-width=number
	将输入源行的最大宽度(如列表中所示)设置为字节数。
--listing-cont-lines=number
	将单行输入的列表中打印的最大行数设置为数字 + 1
-o objfile
	将 object-file 输出命名为 objfile。
-R
	将数据部分折叠到文本部分。
--hash-size=number
	将 GAS 哈希表的默认大小设置为接近 number 的质数。增加此值可以减少它的时间长度 让汇编程序执行其任务,但代价是增加汇编程序的内存要求。同样,减小此值可以减少内存 以牺牲速度为代价的要求。
--reduce-memory-overheads		//减少内存开销
此选项降低了 GAS 的内存要求,但代价是使组装过程变慢。目前,此开关是同义词 对于 --hash-size=4051,但将来它也可能有其他影响。
       --sectname-subst
           Honor substitution sequences in section names.
--statistics
	打印程序集使用的最大空间(以字节为单位)和总时间(以秒为单位)。
--strip-local-absolute
	从传出符号表中删除本地绝对符号。
-v
-version
打印as版本。
--version
	打印 as 版本并退出。
-W
--no-warn
	禁止显示警告消息。
--fatal-warnings
将警告视为错误。
--warn
不要禁止显示警告消息或将其视为错误。
-w
忽视。
-x
忽视。
-Z
	即使在出现错误后也能生成对象文件。
-- | files ...
标准输入或要组合的源文件。

注: man手册此处之后的选项只适用于特定架构的CPU,因此本文忽略该部分的描述。详情请查找原man手册。

另见

gcc(1)、ld(1) 以及 binutils 和 ld 的 Info 条目。

版权

版权所有 –© 1991、92、93、94、95、96、97、98、99、2000、2001、2002、2006、2007、2008、2009 自由软件基金会。

根据 GNU 自由文档许可证 1.3 版或 自由软件基金会发布的任何更高版本;没有固定部分,没有封面文本,也没有封底文本。副本 许可证包含在标题为“GNU 自由文档许可证”的部分中。

引用者

AS86(1)、AVR-CPP(1)、AVR-GCC(1)、CCOM(1)、CLANG(1)、CPP(1)、ELF(1)、ELF(5)、FP(1)、FPC(1)、G77(1)、I686-PC-MINGW32-GCC(1)、I686-PC-MINGW32-GFORTRAN(1)、PCC(1)、PCC-CPP(1)、xtensa-linux-gnu-cpp(1)、xtensa-linux-gnu-gcc(1)、yasm(1)

  • 28
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值