当前位置:  开发笔记 > 编程语言 > 正文

汇编语言和编译语言

如何解决《汇编语言和编译语言》经验,为你挑选了2个好方法。

如果两者都转换为机器代码,汇编如何比编译语言更快?

我说的是真正编译的语言,它们被翻译成机器代码.不是C#或Java,它们首先被编译为中间语言,然后由软件解释器等编译为本机代码.

在维基百科上,我找到了一些我不确定它是否与此相关的东西.是因为从更高级别的语言翻译会产生额外的机器代码吗?或者我的理解错了吗?

称为汇编程序的实用程序用于将汇编语言语句转换为目标计算机的机器代码.汇编程序从助记语句到机器指令和数据执行或多或少的同构转换(一对一映射).这与高级语言形成对比,在高级语言中,单个语句通常会产生许多机器指令.

Joey.. 25

嗯,确实与你的问题有点关系.关键是编译器有时会出于各种原因生成低效的机器代码,例如无法完全分析代码,插入自动范围检查,自动检查对象null等.

另一方面,如果你手工编写汇编程序代码并知道你在做什么,那么你可能会编写一些比编译器更有效的东西,虽然编译器的行为可能会被调整,你通常可以告诉它不要做范围例如,检查.

然而,大多数人不会编写比编译器更好的汇编程序代码,因为编译器是由那些知道很多非常奇怪但非常酷的优化的人编写的.循环展开之类的东西通常也很难自己编写,并且在许多情况下使得生成的代码更快.

虽然计算机执行的所有内容通常都是机器代码,但运行的代码根据您在机器和程序员之间放置的抽象级别而有很大差异.对于Assembler而言,对于Java来说,还有一些......

此外,许多人错误地认为在较高抽象层的某些优化会在较低的抽象层上获得回报.情况不一定如此,编译器可能无法理解您要执行的操作并且无法正确优化它.



1> Joey..:

嗯,确实与你的问题有点关系.关键是编译器有时会出于各种原因生成低效的机器代码,例如无法完全分析代码,插入自动范围检查,自动检查对象null等.

另一方面,如果你手工编写汇编程序代码并知道你在做什么,那么你可能会编写一些比编译器更有效的东西,虽然编译器的行为可能会被调整,你通常可以告诉它不要做范围例如,检查.

然而,大多数人不会编写比编译器更好的汇编程序代码,因为编译器是由那些知道很多非常奇怪但非常酷的优化的人编写的.循环展开之类的东西通常也很难自己编写,并且在许多情况下使得生成的代码更快.

虽然计算机执行的所有内容通常都是机器代码,但运行的代码根据您在机器和程序员之间放置的抽象级别而有很大差异.对于Assembler而言,对于Java来说,还有一些......

此外,许多人错误地认为在较高抽象层的某些优化会在较低的抽象层上获得回报.情况不一定如此,编译器可能无法理解您要执行的操作并且无法正确优化它.


我通常把它与带手动变速器的汽车或自动变速器之间的差异进行比较.人们说手动变速器可以获得更好的燃油经济性,如果驾驶员非常熟练,那就是真的*,因为它可以让他更好地控制,并且这种控制可以让熟练的驾驶员以最佳方式换挡.如果驾驶员不知道他到底在做什么,那么更精细的控制意味着他实际上会比自动驾驶更糟糕.
如果你*知道你正在做什么*,手写汇编代码可能比编译代码更快.大多数时候,它不会.

2> yu_sha..:

大会有时可能会比编译型语言更快,如果一个汇编编程比编译器生成的写更好的装配.

编译语言通常比汇编语言更快,因为编写编译器的程序员通常比常规程序员更了解CPU架构.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有