Rah*_*tro 11 executable instruction-set platform-independent instructions
如何在AMD和Intel系统上运行可执行文件.AMD和英特尔的指令集不同吗?可执行文件如何在两者上工作?他们究竟是如何编译文件的呢?操作系统在这一切中的作用究竟是什么?
小智 9
在给定的处理器迭代中,AMD和Intel之间唯一真正的区别是它们支持的指令集的实现.x86(32位)和x64(64位)是Intel和AMD处理器最常用的两种指令集.
当Intel和AMD在其芯片中实现指令集时会产生差异 - 但这些实现应该对指令集本身没有影响.因此,如果为x64处理器编译程序,它可以在任何实现x64指令集的处理器上运行,几乎所有现代Intel和AMD处理器都可以实现.
实现差异的一个很好的例子是英特尔喜欢超线程核心的方式,而AMD喜欢只添加更多核心.他们这样做的原因有很多,例如功耗和更好的并发处理,但是如果程序运行它并没有真正影响,因为它不会改变指令集.Intel和AMD之间的另一个区别是管道阶段的数量,这会影响速度.
考虑到操作系统时,会出现巨大的复杂性.Windows拥有巨大的库,如果程序想要在Windows上运行,程序必须使用这些库.Linux和Mac OS X也是如此.由于这些库不在操作系统之间共享,因此在一个操作系统上编写的程序可能不会在另一个操作系统上运行.
小智 5
如今,编译基本上是针对操作系统而不是硬件完成的。由于大多数硬件都有通用协议和/或技术,正如Seth Rachwitz 的回答中提到的,x86 或 x64 机器代码/操作码/指令集,一些程序员确实制作了设计为在某些硬件上更好地运行的软件,即针对 AMD 或 Intel 进行了优化, ETC。
但他们仍然有其他硬件的其他版本。主要是由于操作系统的原因,您需要担心位长度。和/或运行操作系统,大多数编译器或软件制造商倾向于编译为共享机器代码而不是制造商特定的代码。
应该记住,不同的人以不同的方式使用相同的东西。麻省理工学院的人员可能会决定根据自己的需要编写自己的操作系统,并且可能希望使用英特尔指令集的高级特定功能。还有一些人完全重做他们自己的Android,等等。