首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译成机器语言的程序如何在不同的机器上运行?

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

Stack Overflow用户
提问于 2012-05-10 01:46:22
回答 3查看 3.2K关注 0票数 5

在学校里,我们被教导编译器将计算机程序编译成机器语言。我们还学到,机器语言由对硬件的直接指令组成。那么,相同的编译程序如何在具有不同硬件的几种计算机配置上运行呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-10 01:49:23

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

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

如果您的意思是,如何在英特尔x86上运行用于ARM cpu的程序,那么您就不能-除非通过某种虚拟机仿真器读取每条ARM指令,并将其转换为x86,或者运行与一组x86函数相同的功能,然后返回与ARM指令相同的结果。

编辑:我想你是指有不同硬件的个人电脑,也就是不同的外围设备,但处理器系列相同?

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

票数 13
EN

Stack Overflow用户

发布于 2012-05-10 01:48:18

使用仿真器或虚拟机,其中任何一个都可以有效地即时翻译机器语言。

票数 4
EN

Stack Overflow用户

发布于 2012-05-10 01:52:25

我认为更准确的说法是,本机编译器编译到处理器的特定指令集。由于存在保持向后兼容性的处理器系列: 8086 - 80386 - 80486 - 80586 - Dual Core - Quad Core...;然后每个处理器运行其祖先的指令。如果您想要跨处理器架构移植代码,那么您肯定需要一个虚拟机或仿真器,就像前面提到的那样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10521341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档