不同的CPU有不同的指令格式,但是它们怎么能跑同一个程序呢?

Cricketol 2009-04-26 10:39:18
难道操作系统和CPU之间还有一层翻译?
...全文
303 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
CBEMA 2009-04-28
  • 打赏
  • 举报
回复
不同cpu对应的部分指令集有相同的,用这样的指令集写出的程序当然可以跑在不同cpu下。
xtdumpling 2009-04-28
  • 打赏
  • 举报
回复
每个操作系统都有其支持的CPU列表,没有什么操作系统能够在任何CPU上都能跑的.
Cricketol 2009-04-28
  • 打赏
  • 举报
回复
我明白了
非常感谢大家!!!
PctGL 2009-04-28
  • 打赏
  • 举报
回复

这种程序很少见,也很长见,象游戏模拟器,原理其实就是硬件地址编码的映射
不过这必须有一套完整的自动认可系统,如果是两套指令系统混编,这么bt的东西,我还没见过...
xtdumpling 2009-04-28
  • 打赏
  • 举报
回复
像Intel,AMD的CPU都有一条标准的CPUID指令,能够得到CPU的很多信息
Cricketol 2009-04-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xtdumpling 的回复:]
每个操作系统都有其支持的CPU列表,没有什么操作系统能够在任何CPU上都能跑的.
[/Quote]
有这句话我就理解了
感谢大家!!!

还有个小小的问题,操作系统怎么识别到底是那种CPU?
hjjdebug 2009-04-27
  • 打赏
  • 举报
回复
lz 没有把“程序”二字说清楚。 问题也就比较模糊。
Cricketol 2009-04-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 rqshi0315 的回复:]
底层的程序把上面的应用封装了。

例如,同一操作系统,如果是cup 不同,虽然上面的大部分代码都一样但是,底层的代码是不同的。
操作系统也不完全脱离汇编的,和硬件直接打交道的要用汇编,汇编的话那就和处理器有联系了。这部分代码小,所以即使有不同,也不认为是不同的操作系统。
[/Quote]

那是不是每个操作系统底层都会根据不同的CPU按照不同的指令规则解释程序?
如果是这样的话每个操作系统都要收集每个操作系统的指令集,以保证操作系统本身在任何CPU上都能跑起来,能否这样理解?
goodider 2009-04-27
  • 打赏
  • 举报
回复
打个比方可能不恰当。比如CPU就是公路。各种指令就是交通表示线和交通规则。各种操作系统啊就是汽车。不管是高速公路(INTEL)还是环行线(AMD)不管你是是左驾驶还是右驾驶。因为他们路上都有道路标示线他们都要遵守交通规则(各种指令)。虽然道路设计和施工方法不一样。但是他们都是路。上面都跑汽车(各种操作系统)。
rqshi0315 2009-04-27
  • 打赏
  • 举报
回复
底层的程序把上面的应用封装了。

例如,同一操作系统,如果是cup 不同,虽然上面的大部分代码都一样但是,底层的代码是不同的。
操作系统也不完全脱离汇编的,和硬件直接打交道的要用汇编,汇编的话那就和处理器有联系了。这部分代码小,所以即使有不同,也不认为是不同的操作系统。
hjjdebug 2009-04-27
  • 打赏
  • 举报
回复
AMD, 及早期cyrix 都是兼容INTEL cpu 的, 就是说它们和intel cpu 有几乎一样的指令集。
Cricketol 2009-04-27
  • 打赏
  • 举报
回复
我的意思是AMD,INTEL等CPU的指令系统必然有差别,但是它们同样可以跑同一个程序或者说跑同一个操作系统
小赌移情 2009-04-26
  • 打赏
  • 举报
回复
不能運行同一程序的, 為x86的,為mips的,為arm的都要分別編譯.

不過java,.net情況就不同, 確實有個虛擬機.
cnzdgs 2009-04-26
  • 打赏
  • 举报
回复
只要CPU兼容程序所使用的指令即可运行,例如程序使用的是386指令集,则在各种兼容386的CPU上都可以运行。

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧