如何编译汇编程序编译器

时间:2017-10-21 22:19:22

标签: c assembly

我不久前才知道,大多数asm编译器都是用C语言或其他语言编写的,我们说汇编程序是最快的语言。但如果它用C编码,它怎么能比C本身更快?那么编译器会做什么? ASM中是否有ASM编译器?我真的不明白它是如何工作的......我在互联网上搜索,但我没有找到我想要的东西...... 您是否已经解释或给我任何可以帮助我更好地理解装配编译器概念的链接?

1 个答案:

答案 0 :(得分:1)

这里有三个被抛出的概念:

  • 编译器的速度
  • 处理器的速度
  • 可执行文件的速度

首先,为了解决这个问题,编译一些可执行文件所花费的时间与该可执行文件运行所花费的时间关系非常小。 (编译器可能需要更长时间来进行一些仔细分析并应用优化。)

处理器运行的速度是另一回事。汇编语言最接近机器语言,这是您的处理器可以理解的。机器语言中的任何给定指令都将以机器处理该指令的速度运行。

根据定义,处理器上执行的所有操作都必须转换为机器语言,以便处理器能够理解并执行它。

这就是事情变得棘手的地方。汇编程序会将您直接编写的代码翻译成机器语言,但程序不仅仅是知道如何转换为机器语言。假设您有一个复杂的值,例如选项集合。这些选项必须保存为字符串,整数,浮点数等。它们是如何存储的?他们是如何访问的?

完成所有这些操作的方式可能会有所不同。您组织程序的方式可能有所不同。这些变化会影响可执行时间。

因此,您可以使用汇编语言编写一个非常慢的程序,使用解释语言编写速度非常快的程序。而且,坦率地说,即使您直接使用汇编程序,编译器通常也比组织最佳机器代码更好。


所以要说明一点:编译器的工作是将文本源代码(C或汇编或其他)转换为机器代码,这是您的处理器所理解的。完成后,不再需要编译器。

除此之外还有更多,但这是一般的想法。