Executable如何在Windows的不同CPU上运行

时间:2017-09-24 02:22:27

标签: windows assembly executable

我听说汇编语言取决于CPU,而且.exe​​文件几乎可以在所有Windows机器上运行。让我想知道它是如何工作的?

这是否意味着只有少数汇编语言?

或 Windows系统是否进行某种转换以适应不同类型的CPU?

1 个答案:

答案 0 :(得分:3)

简单的回答:

它们不能在“不同的CPU”上执行。

更复杂的答案:

大多数运行Windows的计算机只使用两种不同类型的CPU:x86或x86-64。

  • x86-64与x86兼容,因此您可以在x86-64 CPU上运行为x86编译的可执行文件。
  • 无法在x86 CPU上运行为x86-64编译的可执行文件。
  • 有些Windows计算机使用不同的CPU(ARM,MIPS,SuperH ......)。您不能在x86-64和x86 CPU上运行为这些CPU编译的可执行文件。另一方面,只能在这样的计算机上运行为特定CPU类型(ARM,MIPS,SuperH ...)编译的可执行文件。

然后有所谓的“.NET”可执行文件。这些可执行文件包含任何机器代码,但它们包含特殊的字节代码(类似于Java程序)。

当您在某台计算机上第一次运行该程序时,Windows会将该字节代码转换为适合您运行该程序的计算机的机器代码。如果在ARM计算机上运行程序,则字节代码将转换为ARM程序。

计算机实际上将执行“翻译”,而不是原始的“.NET”可执行文件。

因为“翻译”是针对特定计算机完成的,所以不需要在不同的CPU上执行。