自己动手构造编译系统:编译、汇编与链接1.3.2 编译
编译后产生的汇编文件hello.s内容如下:
.file "hello.c"
.section .rodata
.LC0:
.string "Hello World!"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
andl $-16, %esp
subl $16, %esp
movl $.LC0, %eax
movl %eax, (%esp)
call printf
movl $0, %eax
leave
ret
.size main, .-main
.ident "GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5"
.section .note.GNU-stack,"",@progbits
GCC生成的汇编代码的语法是AT T格式,与Intel格式的汇编有所不同(若要生成Intel格式的汇编代码,使用编译选项“-masm=intel”即可)。比如立即数用“$”前缀,寄存器用“%”前缀,内存寻址使用小括号等。区别最大的是,AT T汇编指令的源操作数在前,目标操作数在后,这与Intel汇编语法正好相反。本书会在后续章节中详细描述这两种汇编语法格式的区别。
不过我们仍能从中发现高级语言代码中传递过来的信息,比如字符串“Hello World!”、主函数名称main、函数调用call printf等。
相关文章
- Linux下建立软链接
- 分析php生成短网址/短链接原理和用法实例
- 链接
- 各种网络模拟器的下载链接
- HTML链接
- sql 链接符 ||
- Android:隐私政策弹窗与链接
- Highcharts JS去除Highcharts.com链接的方法
- Charles 访问 HTTPS 链接不是私密连接 (完美解决)
- Makefile 概述 程序的编译和链接 介绍 如何工作的 自动推导
- Python编程:利用上下文管理器管理MySQL的链接对象
- linux软链接的创建、删除和更新
- 个人随记 —— 记录一次服务链接泄露路程
- C语言预处理编译链接各个阶段错误,分阶段的说一下
- 自然语言处理(NLP)数据集汇总 2(附下载链接)
- 收藏 | 自然语言处理(NLP)数据集汇总(附下载链接)
- [SQL] SQL Server远程链接MySql数据库(LinkedServer)