回 帖 发 新 帖 刷新版面

主题:为什么高级语言可移植性强于汇编

这虽是个常识。汇编语言转化成对应cpu的机器码,而高级语言同样要编译成机器码,为什么后者产生的机器码能适应不同的cpu呢?难道编译程序事先要判断所在的机型再产生对应的机器码吗?



请一定要指教啊  

回复列表 (共12个回复)

沙发

汇编涉及到所有硬件。它依赖CPU。
不同的CPU有不同的汇编。
而高级语言。没有太多的对低层硬件的操作。
所以高级语言要强于汇编。
这就是为什么,高级语言在低层硬件操作方面永远不如汇编。
换句话说也高级语言和低级语方的差别,一是高级指令代码人类化。低级的如汇编是助记符。这一点没什么。
主要是它们一个可以更多的操作低层世界。
如果那一个高级语言能够控制硬件。那它一定是独立的,不可移植的。
简单的说是这样。

板凳

晕,先谢谢。可你说的我知道,关键问题是高级语言如何实现对多系统的支持的?

3 楼

如何实现。
这就复杂了。
想想JAVA它就是因为“无孔不入”,所以速度慢。不能控制硬件。随着技术的发展。不知以后会怎样。
其实可移植的软件都要写一大半的兼容代码。
想想VC++为什么那么宠大。
3D游戏怎么那么宠大。

4 楼

对呀,为什么?呵呵

5 楼

这主要是说源程序吧,而不是说目标代码

6 楼

再作个比喻:
如计算机有0123456789个级别的指令。
汇编写的程序               高级语言指令
0                             4
3                             5
2                             8
1                             7
2                             6  
3                             9  
END                          END
看过这个应该明的差不多了吧。
用汇编肯定主要来写一些很低层的程序。而每个计算机的低层代码又都不一样。
所以它所用的汇编代码很多的要产生计算机低层的指令。
而高级语言一般用来写些高层的代码。所以它一般用4--9级的指令。
要不然为什么高级语言所写的系统程序。就没有不用系统指令好移植呢。
我想信如果用汇编只写一些算术题,一定好移植。(一些游戏软件,不都是用高级语言写一些常用的处理程序。而一些要求速度极高的,一般都要用汇编的)
道理就是这样。

7 楼

可问题是高级语言虽然不直接操作底层硬件,可这个的事情还是要做的啊,这个任务是什么程序做的呢?
难道是不同型号(系列)的机器(cpu)他们虽然指令系统不同,但同时为高级语言提供了统一的标准的高级程序接口吗?
请各位帮助解答,谢谢!

8 楼

[quote]可问题是高级语言虽然不直接操作底层硬件,可这个的事情还是要做的啊,这个任务是什么程序做的呢?
难道是不同型号(系列)的机器(cpu)他们虽然指令系统不同,但同时为高级语言提供了统一的标准的高级程序接口吗?
请各位帮助解答,谢谢![/quote]

需要编译的高级语言,如果需要更换平台,则需要换用新平台的编译器重新编译。之所以说移植性好,是指源代码不需要太大的改变,并非指编译出来的可执行文件可以直接跨平台。

而 JAVA 这种半编译,半解释的程序,编译成半成品,然后由不同平台的解释器去执行,因此虽然跨平台,但同等条件下,效率稍低一些。

9 楼

可移植性,指的是源代码的可移植性
不是编译后的可执行的程序。

java程序运行在虚拟机上,但不同平台的虚拟机 是不一样的。

P.S. 汇编语言没有可移植性

10 楼

某种机器上的第一个高级语言恐怕还是要用汇编来写吧(比如C编译器)。然后又用此编译器来展开其它的东西

我来回复

您尚未登录,请登录后再回复。点此登录或注册