欢迎来到天天文库
浏览记录
ID:37711354
大小:43.50 KB
页数:11页
时间:2019-05-29
《linux汇编语言-GUN AS-chapter2》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2命令行选项这一章讲述所有版本的GNU汇编器中可用的命令行选项,如果想了解特定机器体系结构的相关选项,参见第8章[机器相关性],61页。如果你是通过GNU编译器(版本2)调用as,你可以使用‘-Wa’选项,把参数传给汇编器,这些参数(包括选项-Wa)必须使用逗号分隔。例如:gcc-c-g-O-Wa,-alh,-Lfile.c这个例子传递了两个参数给汇编器:‘-alh’(以高级语言和汇编语言的形式生成清单到标准输出)‘-L’(在符号表中保留局部符号)。通常你没必要使用‘-Wa‘选项,因为编译器把很多命令行选项自动传递给汇编器。(你可以通过’-v‘选项使用GN
2、U编译器,来确切了解有什么选项被传递给编译过程,包括传递给汇编器的选项)2.1开启清单选项:-a[cdhlns]这些选项开启了汇编器的清单输出。如果只有‘-a’选项,表示需要生成高级语言,汇编语言和符号清单。你可以用其他字母去选择特定的清单选项:‘-ah’需要生成一个高级语言清单,‘-al’需要生成一个输出程序的汇编语言清单,‘-as’需要生成符号表的清单。生成高级语言清单需要使用一个‘-g‘之类的编译调试选项,汇编语言清单(’-al’)也需要上述调试选项。使用‘-ac’选项删去清单中汇编条件为假(false)的语句。下列语句行不进行汇编:一个条件为fal
3、se的.if语句块(或是.ifdef语句块,或是其他的条件汇编语句块),条件为true的.if后面的那个.else语句块,所有不会被汇编的行都会从清单中删去。使用选项‘-ad’选项删除清单中的调试命令。一旦使用了上述某个选项,你就可以使用.nolist,.psize,.title,和.sbttl命令进一步控制清单输出格式。选项‘-an’关闭所有清单表格的处理。如果你不需要输出清单,就不必使用一个‘-a’系列的选项,这时的清单控制命令不会生效。选项‘-a’后的字母可以合成一个选项(例如‘-aln’)。注意,如果汇编源码来自标准输入(例如源码是由gcc创建,并
4、且使用了‘-pipe’命令行开关),则清单中不含有注释和预处理命令。这是因为只有在源代码行被汇编器预处理后,清单代码缓冲区才从标准输入中读取源代码行。这样减少了内存的使用,并且使生成的代码更有效率。2.2-D这个选项没什么作用,但as接受这个选项,使那些写给其他汇编器的脚本文件也能被as使用。2.3快速汇编:-f只有在被汇编程序的源码是由可信任的编译器产生的情况下,才能使用‘-f’选项。使用选项‘-f’时,如果汇编器在汇编输入文件前要对它们进行空格和注释的预处理,则会终止汇编器的汇编。参见3.1[预处理],17页。警告:如果文件事实上需要预处理时(如果它们
5、包含有注释),而你使用了‘-f’,as将不能正常工作。2.4.include命令搜索路径:-Ipath使用这个选项给目录清单加一个路径path,这个目录清单是.Include命令在搜索指定文件使用的,(参见7.37[.include],44页)。你可以视需要多次使用‘-I’来加入不同的路径。第一个搜索的总是当前工作目录;然后,as安照命令行中的顺序(从左到右)搜索‘-I’选项指定的目录。2.5不同的跳转表:-K在as中使用‘.wordsym1-sym2’形式的命令有时会改变生成的代码(参考7.92[.word],59页)。如果在遇到上述情况时您希望as会发
6、出一个警告您可以使用选项‘-K’。2.6包含局部标签:-L以‘L’(必须大写)字母开头的标签叫做局部标签(参见5.3[符号名],29页)。通常调试时你看不见它们,因为它们是供生成汇编源程序的程序(如编译器)使用的,而不是为了引起你的注意。一般来讲as和ld丢弃这些标签,所以你不能用它们来调试。这个选项让as在目标文件中保留那些‘L…’符号。一般如果你这样做了,你也应该让连接器ld保留那些以符号名‘L’开头的符号。默认情况下,以‘L’开始的标签是一个局部标签,不过每一个目标允许重新定义一个局部标签的前缀。在HPPA上,局部标签以‘L$’开始。2.7配置清单输
7、出:--listing通过命令行开关‘-a‘可以开启汇编程序的清单功能(参见2.1[-a],11页)。这个功能使输入源文件和输出目标文件的16进制映象组合起来,并且以清单文件的形式显示它们。清单的格式可以通过汇编源代码中的伪操作来控制(参见7.48[List],47页;7.83[Title],57页;7.64[Sbttl],51页;7.59[Psize],50页;7.14[Eject],40页)也可以通过以下开关:--listing-lhs-width=‘number’设置16进制字节映象第一行的最大宽度,宽度单位为字(16位)。这个映象显示在清单输出的左
8、边。--listing-lhs-width2=‘number’由给
此文档下载收益归作者所有