回 帖 发 新 帖 刷新版面

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

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

请一定要指教啊  

回复列表 (共11个回复)

沙发

每种计算机都有自己的汇编语言——没必要指望汇编语言的可移植性,选择汇编,意味着选择性能而不是可移植或便于调试。

板凳

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

3 楼

因为高级语言程序的移植只要把解释器重写一遍,不需要动你的程序源代码的。汇编则……一句一句重写吧

4 楼

那我来问一个问题,高级语言的编译程序是不一样的,它的编译程序是由什么决定的呢?是程序,程序员,还是机器?

5 楼

因为高级语言主要是利用软件,就象VB,VC+,VFP等,他们是在自己的编译环境下,当你将原代码从一台机子到另一台机子后,它只需用你的原代码从新连接编译以下就可以用了,而汇编在某一台机子上它是直接对计算机的内部寄存器进行写入和读取数据,我们用的计算机就算是同一品牌的同一配置,他们的内部寄存器都有可能有一点差距的!访问的物理地址都有可能不一样!

6 楼

好比不同的黑盒子,汇编要进入黑盒子里面,而高级语言直接连接盒子,不管是什么种类的黑盒子。

7 楼

呵呵,真的很精彩!

8 楼

我觉得没有真正编译成机器能直接识别的机器码,为什么同一台机器Win32的程序在Dos下不能运行?程序还是跟操作系统有关,比如我的机器和你的机器有两套指令系统,但我们的机器上都装有MS的Windows,我在我的机器上用VC编译的程序,结果在我的机器上可以运行,直接复制在你的机器上也可以运行
我觉得操作系统给了程序员一个公用的而且是标准的接口,这样才能实现与硬件无关

9 楼

10 楼

你认为是操作系统的帮助?操作系统竟能识别机器码并做相应的转换?

我来回复

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