程序如何编译在不同的机器上运行的机器语言?(How can a program compiled t

2019-09-17 03:42发布

在学校里,我们一直被教导的编译器编译的计算机程序的机器语言。 我们也一直在教导说,机器语言由硬件直接指示。 那么如何才能在同一编译的程序与不同硬件几家电脑配置上运行?

Answer 1:

取决于“不同硬件”的意思,如果是相同的处理器(或同一家庭如英特尔的x86),那么机器代码指令是相同的。

如果额外的硬件是不同的外围设备(屏幕,磁盘打印机等),然后在操作系统给你一套一致的指令来驱动它们隐藏这些细节

如果你的意思是,你怎么能对一个Intel X86及ARM CPU运行一个程序,那么你就不能 - 除非通过某种虚拟机仿真器读取每个ARM指令,将这些转化为x86或运行相同功能一组86 funcs中,然后返回相同的答案是,ARM的人会做。

编辑:我假设你的意思是不同的硬件电脑 - 即不同的外设,但在同一处理器系列?

说到硬件不涉及这样的具体说明 - 它主要是移动存储到操作系统和/或设备驱动程序的数据要该设备已专门预留特定位置的问题。 在DOS和BIOS的过去,你会再触发interupt调用特定的代码位在BIOS中采取行动对这些数据并将其发送给硬件。



Answer 2:

随着仿真器或虚拟机,其中任何一个的有效转换上飞的机器语言。



Answer 3:

我觉得更准确的说是本地编译器编译到特定指令集的处理器。 由于是保持向后兼容的处理器家族:8086 - 80386 - 80486 - 80586 - 双核 - 四核...; 然后每个处理器运行其祖先的指令。 如果你想端口在处理器架构的代码,那么你需要肯定的虚拟机或模拟器,就像前面提到的。



文章来源: How can a program compiled to machine language run on different machines?