为什么CPU之间的区别无处不在?

时间:2015-05-01 20:18:22

标签: cpu executable machine-code

我知道每个编写的程序最终都归结为机器代码 - 这就是编译器生成的内容,即可执行文件所包含的内容,而且这是处理器理解的唯一语言。我也知道不同的处理器可能有不同的指令集(我知道65c816汇编,我想它与今天的计算机有很大不同)。

这是我没有得到的:如果存在不同的指令集,那么为什么我们似乎每次使用软件时都不必关心

如果一个程序是针对一个特定的CPU编译的,那么它可能无法在另一个CPU上运行 - 然而,我从未看到类似“英特尔用户下载此版本,AMD用户下载此版本”的通知。我甚至不必知道我在使用什么CPU,每个可执行文件似乎......工作。对于编译器来说也是如此 - 显然,对于每个处理器,没有单独的版本,例如GCC,对吗?

我知道指令集的差异比以前更加微妙,但即便如此,至少应该有一点区别。我想知道为什么似乎没有 什么是我不理解?

1 个答案:

答案 0 :(得分:0)

这种区别实际上非常引人注目。除英特尔与AMD之外。 AMD使其处理器与Intel机器代码兼容。当然是有目的的。

今天有一个转向JIT编译(Java,.NET等)。在这种情况下,可执行文件不包含机器代码。它包含一个简单的中间语言,它在执行之前编译,在正在运行的处理器的机器代码中。这使得处理器架构完全不透明。