编译为机器语言的程序如何在不同的机器上运行?

Bob*_*off 5 operating-system compiler-theory

在学校,我们被教导编译器将计算机程序编译为机器语言.我们还被告知机器语言包含对硬件的直接指令.然后,如何在具有不同硬件的多个计算机配置上运行相同的编译程序?

Mar*_*ett 12

如果它是相同的处理器(或同一系列,例如Intel x86),则取决于"不同硬件"的含义,那么机器代码指令是相同的.

如果额外的硬件是不同的外围设备(屏幕,磁盘打印机等),那么操作系统通过为您提供一致的指令集来隐藏这些细节

如果你的意思是,如何在Intel x86上运行ARM cpu的程序,那么你不能 - 除了某种虚拟机模拟器读取每个ARM指令并将它们转换为x86或运行相同的程序作为一组x86函数的功能,然后返回与ARM相同的答案.

编辑:我认为你的意思是具有不同hw的PC - 即不同的外围设备但是相同的处理器系列?

与硬件交谈并不涉及具体的指令 - 主要是将内存移动到操作系统和/或设备驱动程序专门为进入该设备的数据保留的特定位置.在DOS和BIOS的旧时代,您将触发中断以调用BIOS中的特定位代码来处理该数据并将其发送到HW.