【问题标题】:Why can an executable run on both Intel and AMD processors?为什么可执行文件可以同时在 Intel 和 AMD 处理器上运行?
【发布时间】:2015-11-17 01:19:06
【问题描述】:

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

【问题讨论】:

标签: executable instructions instruction-set platform-independent


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      相关资源
      最近更新 更多