AT&T汇编语言程序设计详解与gcc实践

3星 · 超过75%的资源 需积分: 10 4 下载量 10 浏览量 更新于2024-07-28 收藏 267KB PDF 举报
AT&T汇编语言程序设计是一门详细介绍了使用AT&T汇编语法进行编程的技术课程。该课程由四川大学电气信息学院的陶冶江教授讲解,主要针对的是汇编语言的基础概念和实践应用。学习内容包括对gcc编译器的使用,如gcc编译C语言源代码生成汇编代码(test.c到test.s)的过程,以及如何通过-c选项仅编译不链接的命令行操作。 在程序设计部分,首先介绍了数据段的组织,如.section.data用于定义存储常量和变量,如输出字符串"Nowmyageis%d\n"和整型变量age。section.text则定义了程序的入口点,即全局_start,其中包含了基本的指令如nop、push、call等,调用printf和exit函数来展示代码功能。 汇编语言的链接和执行过程被详细阐述,通过as命令将汇编代码(.s)编译成目标文件(test.o),然后利用ld命令与动态链接器ld-linux.so.2进行连接,形成可执行文件(test)。程序中还涉及到了C语言库的使用,比如printf函数。 调试是编程不可或缺的部分,课程提到了使用gdb工具进行汇编语言的调试,通过-gstabs选项生成包含调试信息的编译结果。gdb提供了丰富的命令集,如设置断点、单步执行、查看寄存器值、查看内存地址以及详细查看特定数据字段的格式,如字符、十进制、十六进制和不同长度的数据类型(如byte、double、float、int和octa)。 数据段的管理也很重要,例如使用.data.rodata定义只读数据段,确保数据的保护性。此外,还介绍了常见的数据类型存储格式,如.ascii和.asciz用于存储字符串,以确保正确的内存分配和处理。 这门课程深入浅出地讲解了AT&T汇编语言的语法、程序结构、链接与执行流程以及调试技术,对于希望深入理解底层系统编程的学生或开发者来说,是一份宝贵的资源。通过学习,学生将能够掌握编写高效、低级控制的程序能力,并理解C语言和其他高级语言与汇编语言之间的转换过程。