20

可执行文件如何在 AMD 和 Intel 系统上运行。AMD和Intel的指令集不一样吗?可执行文件如何在两者上工作?他们究竟是如何编译文件以使其工作的。操作系统在这一切中究竟扮演了什么角色?

4

2 回答 2

15

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

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

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

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

于 2015-08-23T16:01:40.877 回答
3

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

于 2018-10-10T16:08:54.647 回答