ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:45.02KB ,
资源ID:7664144      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-7664144.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(gas汇编器命令文档格式.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

gas汇编器命令文档格式.docx

1、之所以存在这样的区别,是因为GAS需要模仿各种汇编器的不同动作。GAS还提供.balign和.p2align命令,在以后详细讲述,这两条命令在所有的机型上使用相同的动作 (但需要向GAS明确说明机型)。7.4 .ascii string.ascii可不带参数或者带多个由逗点分开的字符串(见3.6.1.1节Strings,第19页)。它把汇编好的每个字符串(在字符串末不自动追加零字节)存入连续的地址。7.5 .asciz .asciz类似与.ascii,但在每个字符串末自动追加一个零字节。.asciz中的z代表“zero”。7.6.balignwl abs-expr, abs-expr, abs

2、-expr增加位置计数器(在当前子段)使它指向规定的存储边界。边界基准,单位为字节。例如,.balign 8向后移动位置计数器直至计数器的值等于8的倍数。如果位置计数器已经是8的倍数,则无需移动。第2个表达式参数(结果必须是纯粹的数字)给出填充字节的值,用这个值填充位置计数器越过的地方。第2个参数(和逗点)可以省略。如果省略它,填充字节的值通常是0。但在某些系统上,如果本段标识为包含代码,而填充值被省略,则使用no-op指令填充空白区。第3个参数的结果也必须是纯粹的数字,这个参数是可选的。如果存在第3个参数,它代表本对齐命令允许跳过字节数的最大值。如果完成这个对齐需要跳过的字节数比规定的最大值

3、还多,则根本无法完成对齐。您可以在边界基准参数后简单地使用两个逗号,以省略填充值参数(第二参数);如果您在想在适当的时候,对齐操作自动使用no-op指令填充,本方法将非常奏效。.balignw和.balignl是.balign命令的变化形式。.balignw使用2个字节来填充空白区。.balignl使用4字节来填充。例如,.balignw 4,0x368d将地址对齐到4的倍数,如果它跳过2个字节,GAS将使用0x368d填充这2个字节(字节的确切存放位置视处理器的存储方式而定)。如果它跳过1或3个字节,则填充值不明确。7.7.byte expressions.byte可不带参数或者带多个表达式

4、参数,表达式之间由逗点分隔。每个表达式参数都被汇编成下一个字节。7.8 .comm symbol , m声明一个符号名为symbol的通用符号(common symbol)。当连接时,目标文件中的通用符号可能被并入其它目标文件中已定义的符号,或者被并入其他目标文件中同名通用符号。如果ld无法找到该符号的定义只有一个或多个通用符号则分配length个字节的未初始化内存。Length必须是一个纯粹的表达式。如果ld发现多个同名的通用符号,并且它们的长度不同,ld将按照它们之中最大的length值为符号分配内存。当使用ELF格式时,.comm可以使用第3个参数。它代表符号需要对齐的边界基准(例如,边

5、界基准为16时意味着符号存放地址的最低4位应该是零)。第3个参数表达式结果必须是纯粹的数字,而且一定是2的幂。当ld为通用符号分配未初始化内存时,在存放符号时要使用到这个参数。如果没有规定边界基准,as将把边界基准设置成以2为底的该符号长度的对数,并向下取整。最大值为16。.comm的语法在HPPA上稍微有些不同。语法是symbol .comm, length;其中参数symbol是可选的。7.9 .data subsection.data通知as汇编后续语句,将它们追加在编号为subsection(subsection必须是纯粹的表达式)数据段末。如果参数subsection省略,则默认是0

6、。7.10 .def name开始定义符号name的调试信息;定义区延伸至遇到.endef命令。本命令只在as被配置成COFF格式输出时才使用;当输出为b.out格式时,可以使用.def命令,但被忽略。7.11 .desc symbol, abs-expression本命令用一个纯粹表达式的低16位的值设置符号symbol的描述符(见5.5符号属性,第30页)。当as被配置成COFF输出时,.desc命令无效;它只适用于a.out或b.out目标格式。为兼容起见,当配置为COFF时,as接受此命令,但不产生输出。7.12 .dim这条命令由编译器生成的,以便在符号表中加入辅助调试信息。只可以在

7、.def/.endef对之间使用此命令。.dim仅仅在生成COFF格式输出时是有意义的;当生成b.out时,as接受这条命令,但忽略它7.13 .double flonums.double后跟着零个或由逗点分开多个的浮点数。本指令汇编出浮点数字。生成的浮点数的确切类型视as的配置而定。7.14 .eject当生成汇编清单时,强制清单页在此点中断。7.15 .else.else 是支持as进行的条件汇编指令之一;见7.35.if,第43页。如果前面.if命令的条件不成立,则表示需要汇编.else后的一段代码。7.16 .elseif.elseif 是支持as进行的条件汇编指令之一。见7.35节

8、.if,第43页。它可以在.esle段中快速产生一个新的.if块。7.17 .end.end标记着汇编文件的结束。as不处理.end命令后的任何语句。7.18 .endef这条命令标志着从.def开始的符号定义结束。.endef命令仅仅在生成COFF格式的输出有意义;如果as被配置为生成b.out输出,虽然as接受这条命令,但忽略它。7.19 .endfunc.endfunc标志着一个由.func命令定义的函数的结束。7.20 .endif.endif是支持as进行的条件汇编的指令之一.它标志着条件汇编代码块的结束。见7.35节.if,第43页。7.21 .equ symbol, expres

9、sion本命令把符号symbol值设置为expression。它等同与.set命令。见7.68.set,第53页。在HPPA上的equ语法是symbol .equ expression。7.22 .equiv symbol, expression.equiv 类似与.equ & .set命令, 不同之处在于,如果符号已经定义过,as会发出错误信号。除了错误信息的内容之外,它大体上等价与:.ifdef SYM.err.endif.equ SYM,VAL7.23 .err如果as汇编一条.err命令, 将打印一条错误信息,除非使用了-Z 选项, as不会生成目标文件。 可以在条件编译代码中使用它来

10、发出错误信息。7.24 .exitm从当前宏定义体中提前退出。见7.50 Macro,第47页。7.25 .extern.extern可以在源程序中使用-以便兼容其他的汇编器但会被忽略。as将所有未定义的符号都当作外部符号处理。7.26 .fail expression生成一个错误(error)或警告(warning)。如果expression的值大于或等于500,as会打印一条“警告”消息。如果expression的值小于500,as会打印一条“错误”消息。消息中包含了expression的值。这在复杂的宏嵌套或条件汇编时偶尔用到。7.27 .file string.file 通告as我们准

11、备开启一个新的逻辑文件。 string 是新文件名。总的来说,文件名是否使用引号都可以;但如果您希望规定一个空文件名时,必须使用引号-。本语句将来可能不再使用允许使用它只是为了与旧版本的as程序兼容。在as的一些配置中,已经删除了.file以避免与其它的汇编器冲突。见第8章 Machine Dependencies, 第61页。7.28 .fill repeat , size , valuerepeat, size 和value都必须是纯粹的表达式。本命令生成size个字节的repeat个副本。Repeat可以是0或更大的值。Size 可以是0或更大的值, 但即使size大于8,也被视作8,以

12、兼容其它的汇编器。各个副本中的内容取自一个8字节长的数。最高4个字节为零,最低的4个字节是value,它以as正在汇编的目标计算机的整数字节顺序排列。每个副本中的size个字节都取值于这个数最低的size个字节。再次说明,这个古怪的动作只是为了兼容其他的汇编器。size参数和value参数是可选的。如果不存在第2个逗号和value参数,则假定value为零。如果不存在第1个逗号和其后的参数,则假定size为1。7.29 .float flonums本命令汇编0个或多个浮点数,浮点数之间由逗号分隔。它和.single的汇编效果相同。见第8章 Machine Dependencies, 61页。7

13、.30 .func name,label.func发出一个调试信息用以指示函数name,这个信息将被忽略,除非文件使用debugging enabled方式的汇编。目前只支持-gstabs。label是函数的入口点,如果name被省略则使用预定的引导符。引导符通常可以是 _ 或者什么也没有,视目标机型而定。所有函数现时被定义为void返回类型,函数体必须使用.endfunc来结束7.31 .global symbol, .globl symbol.global 使符号symbol对连接器ld可见。如果您在局部过程中定义符号symbol,其它和此的局部过程都可以访问它的值。另外,symbol从连

14、接到本过程的另一个文件中的同名符号获取自己的属性。两种写法都可以(.globl 和.global),以便兼容多种汇编器。7.32 .hidden names这是一条关于ELF可见度的命令。其它两条是.internal(见7.39.internal,44页) 和 .protected (见7.58 .protected, 50页)。本命令取消指定符号的缺省可见度(可见度由其他命令捆绑设定:local,global,weak)。本命令把可见度设置为hidden,这意味着本符号对其他部分不可见。这最好是一些需要长期保护的符号。7.33 .hword expressions本命令后可以不带或带多个ex

15、pressions,并且为每个参数生成一个16位数。本命令等同与.short在某些架构上,也可能等同与.word7.34 .ident本命令被某些汇编器用来在目标文件中加入标饰。为了使汇编源码文件兼容上述的汇编器,as简单地接受本命令,但实际上不产生东西。7.35 .if absolute expression.if 标志着一段代码的开始,这段代码只有在参数absolute experession(必须是一个独立的表达式)不为0时才进行汇编。这段条件汇编代码必须使用.endif标志结束。(见7.20.endif, 40页);另外,可以使用.esle来标记一个代码块(见7.15 .else,40

16、页),这个代码块与前面那段代码只有一个会进行汇编。 如果您需要检查数个汇编条件,可以在使用.elseif命令,以避免在.else代码块中进行if/else语句块的嵌套。同样可以使用下面.if的变体:.ifdef symbol如果指定的符号symbol已经定义过,汇编下面那段代码。.ifc string1,string2如果两个字符串相同的话,汇编下面那段代码。 字符串可以可选地使用单引号。如果不使用引号则第1个字符串在逗号处结束。第2个字符串在本行末结束。包含空白的字符串应该使用引号标注。字符串比较时是区分大小写的。.ifeq absolute expression如果参数的值为0,汇编下面那

17、段代码。.ifeqs string1,string2这是.ifc的另一种形式,字符串必须使用双引号标注。.ifge absolute expression如果参数的值大于等于0,汇编下面那段代码。.ifgt absolute expression如果参数的值大于0,汇编下面那段代码。.ifle absolute expression如果参数的值小于等于0,汇编下面那段代码。.iflt absolute expression如果参数的值小于0,汇编下面那段代码。.ifnc string1,string2.类似与.ifc,不过使用反向的测试: 如果两个字符串不相等的话,汇编下面那段代码。.ifnd

18、ef symbol.ifnotdef symbol如果指定的符号symbol不曾被定义过,汇编下面那段代码。 上面两种写法是等效的。.ifne absolute expression如果参数的值为不等于0,汇编下面那段代码。 (换句话说, 这是.if的另一种写法).ifnes string1,string2类似与.ifeqs,不过使用反向的测试:7.36 .incbin file,skip,count这条incbin命令在当前位置逐字地引入file文件的内容。您可以使用命令行选项参数“-I”来控制搜索路径。(见第2章Command-Line Options, 11页)。文件名必须使用引号。参数

19、skip表示需要从文件头跳过的字节数目。参数count表示读入的最大字节数目。注意,数据没有进行任何方式的对齐操作,所以用户需要在 .incbin命令的前后进行必要的边界对齐。7.37 .include 本命令提供在源程序中指定点引入支撑文件的手段。file中的代码如同紧跟.include后一样被汇编。当引入文件汇编结束,继续汇编原来的文件。您可以使用命令行选项参数“-I”来控制搜索路径(见第2章Command-Line Options, 11页)。文件名必须使用引号来标注。7.38 .int expressions可以不带参数或带多个expressions,参数之间由逗号分隔。每个expre

20、ssions都生成一个数字,这个数字等于表达式在目标机器运行时的值。字节顺序和数字的位数视汇编的目标机器而定。7.39 .internal names这是一条与ELF可见度相关的命令。另外的两条是.hidden(见7.32.hidden,42页) 和 .protected (见7.58 .protected,50页)。本命令把指定符号可见度设置为internal,这意味着此符号需要被隐藏(即对其他部分不可见),另外,符号还必须经过处理器的特别的处理。7.40 .irp symbol,values . . .加工一个需要用values替代symbol的语句序列。语句序列从.irp命令开始,在.e

21、ndr命令前结束。对于每个value都进行如下加工:用value替代Symbol,并对此语句序列进行汇编。如果没有给出value,则用空字符串(null sting)替代symbol,并将此语句序列汇编一次。使用symbol, 把参数symbol提交给语句序列。例如下列代码.irp param,1,2,3move dparam,sp-.endr等同与move d1,sp-move d2,sp-move d3,sp-7.41 .irpc symbol,values. . .语句序列从.irpc命令开始,在.endr命令前结束。对于value中的每个字符,都进行如下加工;用此字符替代symbol,

22、并对此语句序列进行汇编。如果没有给出value参数,则用空字符串(null sting)替代symbol,并将此语句序列汇编一次。.irpc param,1237.42 .lcomm symbol , length为一个本地通用符号symbol预留length个字节的内存。symbol 的段(属性)和值(属性)被设置为一个新的本地通用符号应有的属性:内存是在bss段中分配的,所以在运行时,这些字节开始都是零。因为symbol没有被声明为全局性的符号,所以symbol对ld通常不可见。某些目标格式允许在.lcomm命令中使用第3个参数。这个参数指出这个bss段中的符号对齐操作所需要的边界基准。.

23、lcomm的语法在HPPA上稍有不同。表示为symbol .lcomm, length; symbol 是可选的。7.43 .lflagsas接受本命令,以兼容其他的汇编器,但忽略之。7.44 .line line-number更改逻辑行号,参数line-number必须是个纯粹的表达式。本命令后的下一行将被赋予此逻辑行号。因此在当前行之前任何其他的语句(在语句分隔符后)的逻辑行号将被视作line-number - 1。以后 as将不在支持这条命令:只是为了兼容现存的汇编器而接受本命令。Warning: 在为AMD29K目标机器配置的as中,不能使用本指令。在这种场合可以使用.ln命令。尽管这

24、是与a. out或b. out目标代码格式相关的命令,在生成COFF输出时as仍然接受它,并且如果.line出现在.def/endef之外的话,就把它视为.ln命令。如果.line在.def语句块中的话,.line命令则是一条编译器使用的命令,用来为调式生成辅助符号信息。7.45 .linkonce type给当前段做一个标志,以便连接器只包含它的一个拷贝。这个命令可以用于几个不同的目标文件中包含同样的段,但需要连接器在最终的输出文件中只包含一个这样的段。. linkouce伪操作必须在每个段的实例都中使用。对重复段的探测基于段名来进行,因此这个段将是唯一的。本命令只在少数目标格式文件中有效,

25、到写本文为止,只有基于Windows NT的PE (Portable Executable)格式的目标文件支持本命令,参数type是可选的,如果指定了此参数,它必须是下列字符串之一。例如. Linkonce same_size不是在所有的格式目标文件都可以使用所有类型的参数。discard 静静地舍弃重复的段,这也是默认值。one_only 如果存在重复的段则发出警告,但只保存一个拷贝。same_size 如果重复的段有不同的大小则发出警告。same_contents 如果重复段的内容不是精确的相符则发出警告。7.46 .ln line-number.ln命令等同与.line.7.47 .mr

26、i val如果参数val是非零值,这将通知as进入MRI模式。如果参数val的值是零,这通知as退出MRI模式。这个变化会影响汇编的结果,直到下个.mri命令,或者直到文件尾。见2.8 MRI mode, 13页。7.48 .list控制(和.nolist命令配合)是否生成汇编清单。这两个命令维护一个内部的计数器(计数器初始值为0).list命令增加计数器的值,.nolist减少计数器的值。当计数器的值大与0时将汇编列表。缺省状态汇编列表的生成是关闭的。当您打开它的时候(使用带-a选项的命令行)第2章 Command-Line Options, 11页), 内部计数器的初始值为1。7.49 .long expressions.long是.int的等价命令,见7.38 .int, 44页.7.50 .macro本命令.macro和.endm命令允许您定义宏来生成汇编输出。例如,下面的语句定义了一个宏sum,这个宏把一个数字序列放入内存。.macro sum from=0, to=5.long from.if to-fromsum (from+1),to.endm使用上述定义,SUM 0,5语句就等于输入下面的汇编语句:.long 0.long 1.long 2.long 3.long 4.long 5.macro macname.macro ma

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2