高级语言为什么不直接编译成机器码,而编译成汇编代码?

来源:互联网 发布:mac app store更新不了 编辑:程序博客网 时间:2024/06/06 01:32
1.一般的编译器,是先将高级语言转换成汇编语言(中间代码),然后在汇编的基础上优化生成OBJ目标代码,最后Link成可执行文件。
2.Que:高级语言为什么不直接编译成机器码,而编译成汇编代码?
  ACK:1)其中有一个好处是方便优化和调试,因为编译器也是工具,也是机器,毕竟是机器生成的程序,不可以非常完美的,而汇编是机器指令的助记            符,一个汇编指令就对应一条机器指令(特殊指令除外)调试起来肯定会比机器指令方便的方便,这样优化起来也方便。
       2)高级语言只需要编译成汇编代码就可以了,汇编代码到机器码的转换是由硬件实现即可,有必要用软件实现这样分层可以有效地减弱编译器              编写的复杂性,提高了效率.就像网络通讯的实现需要分成很多层一样,主要目的就是为了从人脑可分析的粒度来减弱复杂性.
       3)如果把高级语言的源代码直接编译成机器码的话,那要做高级语言到机器码之间的映射,如果这样做的     话,每个写编译器的都必须熟练机          器码。这个不是在做重复劳动么?
1 0
原创粉丝点击