编译和链接的区别
2016-10-18 13:09
197 查看
先看这样一篇汇编代码
.section .text
.global _start
_start:
nop
movl $4, %eax
movl $1, %ebx
movl $5, %ecx
movl $13, %edx
movl %eax,%ebx
movl $1, %eax
movl $0, %ebx
int $0x80
使用 as -gstabs 20160001.s -o 2016.o得到的是二进制代码
使用ld -o 2016 2016.o得到的是可执行文件
将中间代码也就是二进制代码,通过反汇编得到的是
最左边一列代表的是相对位置,位置是从0开始的,中间的是机器码,最右边一列是汇编指令
可以看到,中间代码没有被装载进内存中,因为地址都是以相对地址来表示的。
将可执行代码2016反汇编得到的
同样的道理,最左边的是指令地址,但是很明显,这个地址是32位的,说明代码已经装载进内存中了。
这个例子说明了中间代码链接前和链接后之间的区别。
.section .text
.global _start
_start:
nop
movl $4, %eax
movl $1, %ebx
movl $5, %ecx
movl $13, %edx
movl %eax,%ebx
movl $1, %eax
movl $0, %ebx
int $0x80
使用 as -gstabs 20160001.s -o 2016.o得到的是二进制代码
使用ld -o 2016 2016.o得到的是可执行文件
将中间代码也就是二进制代码,通过反汇编得到的是
最左边一列代表的是相对位置,位置是从0开始的,中间的是机器码,最右边一列是汇编指令
可以看到,中间代码没有被装载进内存中,因为地址都是以相对地址来表示的。
将可执行代码2016反汇编得到的
同样的道理,最左边的是指令地址,但是很明显,这个地址是32位的,说明代码已经装载进内存中了。
这个例子说明了中间代码链接前和链接后之间的区别。
相关文章推荐
- 编译和链接(lib和dll区别)
- 编译和链接(lib和dll区别)
- 运行过程中链接动态链接库与编译过程中链接动态库的区别
- 关于编译与链接具体内容及头文件与源文件区别的理解
- 编译和链接的区别联系
- VC调试版本与发布版本编译链接选项差异和区别
- 编译和链接的区别(转载自从入门到放弃的博客http://blog.sina.com.cn/floatingstars)
- (转)编译和链接的区别
- 编译和链接的区别
- 预处理标识符,预处理与函数的相关的区别;程序的编译与链接的过程
- 编译和链接(lib和dll区别)(转载)
- 静态库的编译 共享库的编译链接运行 及共享库的区别(2)
- 静态库的编译 共享库的编译链接运行 及共享库的区别(1)
- 编译和链接的区别
- 编译和链接的区别
- ANT:AS3编译选项中关于库的链接的区别
- 编译和链接的区别
- 编译和链接的区别
- 编译与链接区别
- 预处理,编译,汇编,链接程序的区别