调用as
1 2 3 4 5 6 7 8 9 10 11 12 | as [-a[cdghlns][=file]] [-alternate] [-D] [-debug-prefix-map old=new] [-defsym sym=val] [-f] [-g] [-gstabs] [-gstabs+] [-gdwarf-2] [-help] [-I dir] [-J] [-K] [-L] [-listing-lhs-width=NUM] [-listing-lhs-width2=NUM] [-listing-rhs-width=NUM] [-listing-cont-lines=NUM] [-keep-locals] [-o objfile] [-R] [-reduce-memory-overheads] [-statistics] [-v] [-version] [-W] [-warn] [-fatal-warnings] [-w] [-x] [-Z] [@file] [-target-help] [target-options] [-|files ...] |
ARM目标选项
1 2 3 4 5 6 7 8 9 10 | [-mcpu=processor[+exteension...]] [-march=architecture[+extension...]] [-mfpu=floating-point-format] [-mfloat-abi=abi] [-meabi=ver] [-mthumb] [-EB-EL] [-maapcs-32|-mapcs-26|-mapcs-float|-mapcs-reentrant] [-mthumb-interwork] [-k] |
@file 从文件读取命令行选项。选项插入到@file选项所在的位置,如果文件不存在或不能读,选项被当做正常的选项,而且不会被移除。文件中的选项用空白隔开,如果选项中有空白,可用单引号或双引号把整个选项包起来。可以使用使用反斜杠转义任何字符串。文件本身也可以包含@file选项。
-a[cdghlmns] 打开lists
-ac omit false condtions
-ad omit debugging directives
-ag include general inforamtion, linke as version and options passed
-ah include high-level source
-al include assembly
-am include macro expansions
-an omit forms processing
-as include symbols
=file set the name of the listing file
可以结合这些选项,如-aln。=file选项如果使用,必须放在最后。-a等价于-ahls
--alternate 开始一个可选宏模式。
--debug-prefix-map old=new
当汇编old中的文件时,使用new记录调试信息。
--defsym sym=value
在汇编输入文件之前,定义符号sym的值为value。值必须为整型常量。和c的定义一样。符号的值可以在源文件中使用.set修改。
-f
fast,跳过空白和注释处理,假设源文件是编译器的输出。
-g
--gen-debug
为每个汇编源文件行产生调试信息。当前可用的调试格式:STABS、ECOFF或DWARF2。
--gstabs
--gstabs+
产生stabs调试信息,后者支持GNU扩展。
--gdwarf-2
产生DWARF2调试信息。
--help 打印命令行选项总结并退出。
--target-help 打印所有的目标相关的选项总结,并退出。
-I dir
添加dir到用于.include指令的搜索列表。
-J 不要为符号溢出给出警告。
-K 产生警告当difference tables altered for long displacement
-L
--keep-locals
保持本地符号
--listing-lhs-width=number
--listing-lhs-width2=number
--listing-rhs-width=number
--listing-cont-lines=number
配置listing输出
-o objfile
设置输出目标文件
-R
将data section折叠进text secion。
--hash-size=number
设置GAS的哈希表大小。修改这个值影响GAS的速度和内存消耗。
--reduce-memory-overheads
减少GAS的内存消耗,等价于--hash-size=4051
--statistics
打印汇编用到的最大空间和时间。
--strip-local-absolute
将本地绝对符号从符号表中移除。
-v
--version
打印as的版本
-W
--no-warn
抑制警告信息
--fatal-warnings
警告当错误处理
--warn
不要抑制警告信息,也不要将其当错误处理。
-Z
即使有错误,也要产生目标文件
-- | files
汇编标准输入或源文件
gnu as是一个汇编器家族,支持多种架构。不同架构有许多共同点,包括目标文件格式、大多数汇编指令(也叫做pseudo-ops)和汇编语法。
as主要汇编gcc的输出,用于链接器ld。
gnu汇编器可以配置为产生不几个不同的目标文件格式。总的来说,这不影响你如何写汇编语言程序,但是不同目标文件格式的调试指令典型的不同。
在as后面,命令行可以包含选项和文件名。选项可以以任何顺序出现。但是文件的顺序是有意义的。
-- 表示标准输入文件。作为as要汇编的一个文件。
除了--,以-开头的命令行参数是一个选项。每个选项改变as的行为,没有选项改变其它选项设置的行为。选项的字母是大小写敏感的。所有的选项时可选的。
有的选项期待严格的一个文件名跟着它们,文件名可以立即跟着选项的字母,也可以作为下一个命令参数。如下两个是等价的:
1 2 | as -o my-object-file.o mumble.s as -omy-object-file.o mumble.s |
后者是为了和老的汇编器兼容。
我们使用source program,简写为source,描述一次as运行的program input。program可以包含一个或多个文件。然而source如何分割为文件不影响source的含义。
source program是所有文件的文本拼接,按照输入的顺序。
每次运行as,他严格的汇编一个source program。source program由一个或多个文件组成。标准输入也是一个文件。
你给as一个命令行,包含一个或多个输入文件名,输入文件从左到有读入,命令行参数如没有特殊的意义,被当做输入文件名。
如果没有指定任何文件名,as从标准输入读取一个文件名。使用--可以显示地指定标准输入作为一个文件。
如果源是空。as产生一个小的空的目标文件。
调试用的文件名有两种:physical files和logical files。前者是命令行给出的文件,后者是汇编指令显示声明的名称。通常用来反映原始的源文件,如.c文件。
缺省文件名是a.out,可以使用-o选项设置。缺省文件名是历史原因。老的汇编器可以直接将self-contained程序汇编成可执行程序。
as将错误和警告信息输出到标准错误。
警告消息格式的格式:
file_name:NNN:Warning Message Text
NNN是行号,优先使用逻辑文件名(.file)和逻辑行号(.line)。
错误信息格式:
file_name:NNN:FATAL:Error Message Tex