您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
不同编程语言最终生成的机器码是否一样?
机器码,编译器,不同不同编程语言最终生成的机器码是否一样?
发布时间:2019-02-08加入收藏来源:互联网点击:
比如,当年的SUN公司的编译器生成的C语言的代码比GNU版本的编译器生成的代码运行速度更快,而且bug更少。一句话,一分钱一分货。
回答于 2019-09-11 08:43:50
主要看程序员是哪里人,会有点口音。
回答于 2019-09-11 08:43:50
按严格意义上来说是不一样的。
你听过条条大路通罗马吗?虽然不同的编程语言最后都要编译成计算机硬件能解码的机器码,但是过程千差万别。
机器的硬件,比如处理器,内核数量,操作系统的位数,等等。都会影响最终生成的机器码。
就像你用M1处理器的MAC跑x86的应用,也要先进行内部的转码才行。
不过这个问题虽然有意思,但是逻辑还是有点不对,相同的机器码不能保证相同的工作环境。效果可能一样,但是过程肯定是有差异的,所以生成的机器码也会不一样。
回答于 2019-09-11 08:43:50
不同的编程语言生成的机器码是不会一样的。这里有两个原因:
CPU的指令集不同导致机器码不同
语言的编译器不同导致机器码不同
每种CPU都有自己的指令集,这些指令集大致包括寄存器操作指令,加法器操作指令等等。每种CPU的寄存器数量和结构都不一样,因此,对应的指令集也不会相同。
每种语言都有不同的编译器。编译器的作用是分析程序语法生成语法树,再把CPU指令代入语法树生成机器码。每种编译器生成的语法树都是不一样的。尽管执行结果是等效的,可以做成很多不同的执行顺序。打个比方,您用算盘算1+2的时候,先拨1再拨2跟先拨2再拨1的结果是一样的。
回答于 2019-09-11 08:43:50
即使同一个源程序,使用同一厂商的不同版本编译器,所生产的代码也不一定相同,否则还需要软件版本更新吗?
上一篇:如果认真学习肯定会近视吗?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |