高级语言编写的程序为什么会比汇编编写的慢? ( 积分: 100 )

  • 主题发起人 strongburn
  • 开始时间
S

strongburn

Unregistered / Unconfirmed
GUEST, unregistred user!
我的理解:高级语言最后也是生成机器能够识别的01代码,可能对于完成某项功能来说,有些代码是多余的,例如连接一些库文件使可执行程序变大。可执行文件越小运行就越快吗?
对于同一台计算机来说完成同样的操作会有不同的01代码?编译器到底怎么完成编译工作的?各位大侠请莫笑
 
S

strongburn

Unregistered / Unconfirmed
GUEST, unregistred user!
我的理解:高级语言最后也是生成机器能够识别的01代码,可能对于完成某项功能来说,有些代码是多余的,例如连接一些库文件使可执行程序变大。可执行文件越小运行就越快吗?
对于同一台计算机来说完成同样的操作会有不同的01代码?编译器到底怎么完成编译工作的?各位大侠请莫笑
 
L

likefrank

Unregistered / Unconfirmed
GUEST, unregistred user!
你说的对,高级语言之所以慢就是因为编译器编译出来的代码有冗余,不但是大小上的,操作上也有!如果你全部用0101来写肯定比较精练了,至于编译器怎么工作你看一下编译原理的书吧!
编译器主要有六个部分(或者说更少):词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。
词法分析的任务是把源程序变成便于编译处理的内部表示,比如去掉注释啦,删除无用的字符啦!
语法分析的任务是判断此程序是否是一个合法的程序,就是是否合乎此仲语言的规范。
语义分析就是分析各个部分要做什么工作,当前没有形式化的方法来系统的描述它,因此予以分析一般采用的是“语法制导翻译”。(形式化的方法就是用一套符号记忆规则来完备有效地表示一种语言)
中间代码生成就是产生一种便于优化和生成目标代码的中间形式,这种中间形式介于源语言和目标语言之间,比如三元使、逆波兰式等。
代码优化顾名思义就是对代码进行优化,减少不必要的操作,以提高程序的执行效率。
目标代码生成就是生成最终的目标代码。
 
F

fxh7622

Unregistered / Unconfirmed
GUEST, unregistred user!
讨论这么高深的问题。
熊掌与鱼不能兼得!!!
 

由由(love)

Unregistered / Unconfirmed
GUEST, unregistred user!
有本叫《编译原理》的书,找来看看吧
 
S

su37

Unregistered / Unconfirmed
GUEST, unregistred user!
高级语言编写的程序为什么会比汇编编写的慢?你自己猜的吧!不同的汇编指令的执行时间是不一样的,写的不好的汇编程序一样慢的可怕.
 
K

kinneng

Unregistered / Unconfirmed
GUEST, unregistred user!
如果一段程序,将所有寄存器都用光了,那么最好用高级语言来写,否则还是汇编快
 

老甘

Unregistered / Unconfirmed
GUEST, unregistred user!
我以前作过一个最简单的编译器,后来没有继续。
可以下载看看.

http://www.tomore.com/dispdocnew.php?id=13182
 
S

strongburn

Unregistered / Unconfirmed
GUEST, unregistred user!
第一次按POWER的时候就晕,当按10000次的时候才逐渐清醒,去学一个原理复杂的设备的应用对我来说总象胸口塞了团棉花,只好强迫自己记住“深学易用”。呵呵,说了几句牢骚。好了
多谢各位,你们大富翁论坛的生命力,细节我自己再弄,发分了。
 
顶部