ILD

GAS Overview
作者:Herbert Yuan 邮箱:yuanjp89@163.com
发布时间:2017-7-30 站点:Inside Linux Development

1 Overview

调用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

汇编标准输入或源文件


2 The GNU Assembler

gnu as是一个汇编器家族,支持多种架构。不同架构有许多共同点,包括目标文件格式、大多数汇编指令(也叫做pseudo-ops)和汇编语法。

as主要汇编gcc的输出,用于链接器ld。


3 Object File Formats

gnu汇编器可以配置为产生不几个不同的目标文件格式。总的来说,这不影响你如何写汇编语言程序,但是不同目标文件格式的调试指令典型的不同。


4 Command-line

在as后面,命令行可以包含选项和文件名。选项可以以任何顺序出现。但是文件的顺序是有意义的。

-- 表示标准输入文件。作为as要汇编的一个文件。

除了--,以-开头的命令行参数是一个选项。每个选项改变as的行为,没有选项改变其它选项设置的行为。选项的字母是大小写敏感的。所有的选项时可选的。

有的选项期待严格的一个文件名跟着它们,文件名可以立即跟着选项的字母,也可以作为下一个命令参数。如下两个是等价的:

1
2
as -o my-object-file.o mumble.s
as -omy-object-file.o mumble.s

后者是为了和老的汇编器兼容。

  

5 Input Files

我们使用source program,简写为source,描述一次as运行的program input。program可以包含一个或多个文件。然而source如何分割为文件不影响source的含义。

source program是所有文件的文本拼接,按照输入的顺序。

每次运行as,他严格的汇编一个source program。source program由一个或多个文件组成。标准输入也是一个文件。

你给as一个命令行,包含一个或多个输入文件名,输入文件从左到有读入,命令行参数如没有特殊的意义,被当做输入文件名。

如果没有指定任何文件名,as从标准输入读取一个文件名。使用--可以显示地指定标准输入作为一个文件。

如果源是空。as产生一个小的空的目标文件。


调试用的文件名有两种:physical files和logical files。前者是命令行给出的文件,后者是汇编指令显示声明的名称。通常用来反映原始的源文件,如.c文件。


6 Output (Object) File

缺省文件名是a.out,可以使用-o选项设置。缺省文件名是历史原因。老的汇编器可以直接将self-contained程序汇编成可执行程序。


7 Error and Warning Messages

as将错误和警告信息输出到标准错误。


警告消息格式的格式:

file_name:NNN:Warning Message Text

NNN是行号,优先使用逻辑文件名(.file)和逻辑行号(.line)。


错误信息格式:

file_name:NNN:FATAL:Error Message Tex


Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.