重学计算机组成原理(七)- 程序无法同时在Linux和Windows下运行

  1. 云栖社区>
  2. Java技术进阶>
  3. 博客>
  4. 正文

重学计算机组成原理(七)- 程序无法同时在Linux和Windows下运行

javaedge 2019-08-17 22:21:02 浏览438
展开阅读全文

既然程序最终都被变成了一条条机器码去执行,那为什么同一个程序,在同一台计算机上,在Linux下可以运行,而在Windows下却不行呢?

反过来,Windows上的程序在Linux上也是一样不能执行的

可是我们的CPU并没有换掉,它应该可以识别同样的指令呀!!!

如果你和我有同样的疑问,那这一节,我们就一起来解开。

1 编译、链接和装载:拆解程序执行

写好的C语言代码,可以通过编译器编译成汇编代码,然后汇编代码再通过汇编器变成CPU可以理解的机器码,于是CPU就可以执行这些机器码了

你现在对这个过程应该不陌生了,但是这个描述把过程大大简化了

下面,我们一起具体来看,C语言程序是如何变成一个可执行程序的。

过去几节,我们通过gcc生成的文件和objdump获取到的汇编指令都有些小小的问题

我们先把前面的add函数示例,拆分成两个文件

  • add_lib.c
  • l

网友评论

登录后评论
0/500
评论
javaedge
+ 关注
所属云栖号: Java技术进阶