ATT汇编语言.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ATT汇编语言

第二章 AT&T汇编语言 提纲 AT&T汇编语言 GCC内嵌汇编 AT&T汇编语言 在Linux中,以.S(或.s)为扩展名的文件是包含汇编语言代码的文件。 在Linux下有两种方式对AT&T汇编进行编译链接,一种是使用汇编程序GAS和连接程序LD,一种是使用GCC AT&T汇编的编译方式 使用汇编程序GAS和连接程序LD 第一步: as sourcecode.s -o objfile.o 将汇编源文件编译成目标文件 第二步:ld objfile.o -o execode 将目标文件链接成可执行文件 使用GCC gcc -o execode sourcecode.S 使用GCC编译一步就可以编译成可执行文件 AT&T汇编示例 .data output: .ascii "hello world\n" .text .globl _start _start: movl $4, %eax movl $1, %ebx movl $output, %ecx movl $12, %edx int $0x80 movl $1, %eax int $0x80 AT&T中的节(Section) 在AT&T的语法中,一个节由.section关键词来标识,当你编写汇编语言程序时,至少需要有以下三种节: .data节 这种节包含程序已初始化的数据,也就是说,包含具有初值的那些变量 .text节 这个节包含程序的代码。需要指出的是,该节是只读节 AT&T中的节(Section) .bss节 这个节包含程序还未初始化的数据,也就是说,包含没有初值的那些变量。当操作系统装入这个程序时将把这些变量都置为0 使用.bss比使用.data的优势在于,.bss节在编译后不占用磁盘的空间,这样编译、连接生成的代码的尺寸会比较小。 尽管在磁盘上不占空间,但是在可执行文件被读入内存后系统还是会为.bss节分配内存 拥有三个节的AT&T汇编程序示例 .data output: .ascii "hello world\n" .text .globl _start _start: movl $4, %eax movl $1, %ebx movl $output, %ecx movl $12, %edx int $0x80 movl $3, %eax movl $1, %ebx AT&T汇编语言常见指令 .ascii 语法:.ascii “string” …. ascii 表示零个或多个(用逗号隔开)字符串,并把每个字符串(结尾不自动加“\0”字符)中的字符放在连续的地址单元。于此类似的 .asciz指令定义的字符串会在结尾处自动加 “\0”字符 .fill 语法:.fill repeat , size , value 含义是反复拷贝size个字节,重复repeat次 ,其中size和value是可选的,默认值分别为1和0 AT&T汇编语言常见指令 .globl 语法:.globl symbol .globl使得连接程序(ld)能够看到symbol。如果你的局部程序中定义了symbol,那么,与这个局部程序连接的其他局部程序也能存取symbol .rept endr 语法:.rept count ……. .endr 把.rept指令与.endr指令之间的行重复count次 AT&T汇编语言常见指令 .space 语法:.space size , fill 这个指令保留size个字节的空间,每个字节的值为fill .byte/.word/.long 语法:.byte/.word/.long expressions 预留1个字节/字/双字,并将这个字节的内容赋值为expression,若是用逗号隔开的多个expression,则为预留多个这样的字节/字/双字,并将它们的内容依次赋值。 .set 设定常数,就好像C程序中的#define的作用一样 AT&T 与Intel的汇编语言语法区别 AT&T和Intel汇编语言的语法区别主要体现在操作数前缀、赋值方向、间接寻址语法、操作码的后缀上 操作数前缀 AT&T 与Intel的汇编语言语法区别 源/

文档评论(0)

peili2018 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档