
既然程序最终都被变成了一条条机器码去执行,那为什么同一个程序,在同一台计算机上,在Linux下可以运行,而在Windows下却不行呢?
反过来,Windows上的程序在Linux上也是一样不能执行的
可是我们的CPU并没有换掉,它应该可以识别同样的指令呀!!!
如果你和我有同样的疑问,那这一节,我们就一起来解开。
1 编译、链接和装载:拆解程序执行
写好的C语言代码,可以通过编译器编译成汇编代码,然后汇编代码再通过汇编器变成CPU可以理解的机器码,于是CPU就可以执行这些机器码了
你现在对这个过程应该不陌生了,但是这个描述把过程大大简化了
下面,我们一起具体来看,C语言程序是如何变成一个可执行程序的。
过去几节,我们通过gcc生成的文件和objdump获取到的汇编指令都有些小小的问题
我们先把前面的add函数示例,拆分成两个文件
- add_lib.c

- l
继续阅读与本文标签相同的文章
上一篇 :
重学计算机组成原理(八)- 程序的装载
-
Spark中几种ShuffleWriter的区别你都知道吗?
2026-05-20栏目: 教程
-
听说你熟悉Flink-On-Yarn的部署模式?
2026-05-20栏目: 教程
-
SparkSQL的3种Join实现
2026-05-20栏目: 教程
-
一道真实的面试题 | 如何保证消息队列的高可用
2026-05-20栏目: 教程
-
同样是iOS开发者,月薪 10K 与30K的差距到底在哪?
2026-05-20栏目: 教程
