电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

汇编语言程序设计(ATamp;T

汇编语言程序设计(ATamp;T_第1页
1/32
汇编语言程序设计(ATamp;T_第2页
2/32
汇编语言程序设计(ATamp;T_第3页
3/32
汇编语言程序设计(AT&T语法) 汇 编 语 言 程 序 设 计 陶 治 江 四 川 大 学 电 气 信 息 学 院 1汇编语言程序设计(AT&T 语法) 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汇编语言程序设计(AT&T 语法) 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,因为数据本身是比较小的,所以只引用了四个自己也可以读出数据,其实是不允许的...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

汇编语言程序设计(ATamp;T

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部