为什么可执行文件可以在Intel和AMD处理器上运行?

时间:2015-08-23 15:34:10

标签: executable instructions instruction-set platform-independent

可执行文件如何在AMD和Intel系统上运行。 AMD和英特尔的指令集不同吗?可执行文件如何在两者上工作?他们究竟是如何编译文件的呢?操作系统在这一切中的作用究竟是什么?

2 个答案:

答案 0 :(得分:7)

在给定的处理器迭代中,AMD和Intel之间唯一真正的区别在于它们支持的指令集的实现。 x86(32位)和x64(64位)是Intel和AMD处理器最常用的两种指令集。

当Intel和AMD在其芯片中实现指令集时会出现差异 - 但这些实现应该对指令集本身没有影响。因此,如果为x64处理器编译程序,它可以在任何实现x64指令集的处理器上运行,几乎所有现代Intel和AMD处理器都可以实现。

实施差异的一个很好的例子是英特尔喜欢超线程核心的方式,而AMD喜欢只添加更多核心。他们这样做有很多原因,例如功耗和更好的并发处理,但是如果程序运行它并没有真正影响,因为它不会改变指令集。英特尔和AMD之间的另一个区别是管道阶段的数量,这会影响速度。

考虑操作系统时会出现巨大的复杂性。 Windows拥有巨大的库,如果程序想要在Windows上运行,程序必须使用这些库。 Linux和Mac OS X也是如此。由于这些库在操作系统之间不共享,因此在一个操作系统上编写的程序可能不会在另一个操作系统上运行。

答案 1 :(得分:1)

基本上,近来,编译是针对OS而不是针对硬件完成的,因为大多数硬件具有通用协议和/或技术,如上所述,x86或x64机器代码/操作码/指令集,一些程序员确实制作了旨在在某些硬件上运行得更好,例如针对AMD或Intel等进行了优化... 但仍然有其他硬件的其他版本 主要是由于操作系统,您需要担心位长和/或正在运行操作系统 大多数编译器或软件制造商倾向于编译为共享的机器代码,而不是特定于制造商的机器代码,应该记住,不同的人以不同的方式使用相同的东西,麻省理工学院的人可能会决定为自己的需求编写自己的操作系统,并且可能想要使用Intel ins tsrcution的高级特定功能设置某些人完全重新做自己的android等...