网站大量收购独家精品文档,联系QQ:2885784924

汇编语言程序设计(atamp;t.pdf

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

汇编语言程序设计(ATT 语法) 汇编语言程序设计 陶治江 四川大学电气信息学院 1 汇编语言程序设计(ATT 语法) gcc 编译器: C 语言: vi test.c gcc -o test test.c ./test (不用进行连接,而且不用改变生成的可执行代码的执行位) gcc –S test.c 会生成 C 语言的汇编代码,默认生成的文件名是:test.s 使用目标文件生成汇编代码的方法: gcc –c test.c //默认生成 test.o ;-c 表示编译或者汇编代码而不进行连接,生成目标文件 objdump –d test.o //生成 test.s 代码 汇编: .section .data output: .asciz Now my age is %d \n age: .int 23 .section .text .global _start _start: nop pushl age pushl $output call printf add $8,%esp pushl $0 call exit 编译:as -o test.o test.s 连接:ld -dynamic-linker /lib/ld-linux.so.2 -o test -lc test.o //使用了标准 C 语言库函数 执行:./test 汇编语言的调试: gdb 工具,若要调试,在编译的时候就需要添加-gstabs 选项,生成调试的信息,这个编译的 结果要大的多: as –gstabs –o testo test.c ld -dynamic-linker /lib/ld-linux.so.2 -o test -lc test.o gdb test 关于 gdb 的命令: run 运行程序 break *_start+1 设置断点 next 单步执行 cont continue 程序正常执行 info registers 查看所有寄存器的信息 print 查看具体的某个寄存器的信息 print/x $eax x 十六进制 t 二进制 d 十进制 x 查看具体内寸处的信息 x/42cb output 数字是要显示的字段数 内存地址 2 汇编语言程序设计(ATT 语法) c 字符 d 十进制 x 十六进制 字段的长度:b 字节 h16 为半字节 w32 位字 数据段: .data .rodata 定义只读数据段,修改后会发生段错误 常用数据类型:.ascii .asciz(末尾有空字节) .byte .double .float .int .octa (八 字整数,16 个字节) .quad( 四字整数,八个字节) .short 定义数组: number: .int 23,34,45 movl number+4,%eax //然后 number+4 引用的就是第二个元素,以字节为偏移量 对于其他的数据类型: number: .octa 23,34,45 movl number+4,%eax 此时 number+16 引用的就是 34,因为数据本身是比较小的,所以只引用了四个自己也可以 读出数据,其实是不允许的。

文档评论(0)

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

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

1亿VIP精品文档

相关文档