在学校里,我们被教导编译器将计算机程序编译成机器语言。我们还学到,机器语言由对硬件的直接指令组成。那么,相同的编译程序如何在具有不同硬件的几种计算机配置上运行呢?
发布于 2012-05-10 01:49:23
取决于您所说的“不同硬件”是什么意思如果它是相同的处理器(或相同的家族,例如英特尔x86),那么机器代码指令是相同的。
如果额外的硬件是不同的外围设备(屏幕、磁盘、打印机等),那么操作系统会给你一组一致的指令来驱动它们,从而隐藏这些细节
如果您的意思是,如何在英特尔x86上运行用于ARM cpu的程序,那么您就不能-除非通过某种虚拟机仿真器读取每条ARM指令,并将其转换为x86,或者运行与一组x86函数相同的功能,然后返回与ARM指令相同的结果。
编辑:我想你是指有不同硬件的个人电脑,也就是不同的外围设备,但处理器系列相同?
与硬件交谈本身并不涉及特定的指令-它主要是将内存移动到操作系统和/或设备驱动程序专门为进入该设备的数据而保留的特定位置。在过去的DOS和BIOS时代,您会触发一个中断,调用BIOS中的特定代码位来处理该数据并将其发送到硬件。
发布于 2012-05-10 01:48:18
使用仿真器或虚拟机,其中任何一个都可以有效地即时翻译机器语言。
发布于 2012-05-10 01:52:25
我认为更准确的说法是,本机编译器编译到处理器的特定指令集。由于存在保持向后兼容性的处理器系列: 8086 - 80386 - 80486 - 80586 - Dual Core - Quad Core...;然后每个处理器运行其祖先的指令。如果您想要跨处理器架构移植代码,那么您肯定需要一个虚拟机或仿真器,就像前面提到的那样。
https://stackoverflow.com/questions/10521341
复制相似问题