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