是不是所有的编程语言都有汇编程序?

Does all the programming languages have assemblers

本文关键字:汇编程序 是不是 编程语言      更新时间:2023-10-16

我发现Go语言有自己的汇编器,C语言的各种编译器都有自己的汇编器,如Turbo C, LCC, OpemWatcom。但有些只是汇编程序,如nasm、gas等。为什么高级语言的编译器带有汇编器,如果编译器必须将源代码转换为汇编代码,那么所有的编程语言都必须有自己的汇编器。

所有的编程语言都有汇编程序吗

现代c++编译器可以直接输出机器码(或llvm的中间目标代码),而不需要生成汇编。汇编程序是可选的,如果存在,它是作为程序员检查代码的方便工具提供的。

一辆车只能由一名司机驾驶吗?不。汽车是组装器,可以为多个驾驶员制造。

发明一种既能记录指令集机器码又能记录汇编语言的处理器符合公司的最大利益。汇编语言不是一种通用的东西,它是非常特定于每个汇编程序的,即解析它并将其转换为机器代码的程序。因此,处理器供应商的文档应该使用某种汇编语言使文档具有可读性。促进新处理器创建或雇用某人创建汇编程序和其他工具符合他们的最大利益,但是您总是必须创建汇编程序,如果不是为了验证处理器。因此泛型汇编程序将存在。

编译器供应商当然可以选择支持一个通用的,一个竞争的,或者自己的或任何组合。做出这些选择的原因有很多。由于各种原因,一些编译器可能选择不生成汇编语言作为中间步骤,而是直接生成机器码。

典型的泛型可重目标编译器倾向于支持编译器-汇编器-链接器模型。他们可能会做得更多,但会倾向于这种模式。又是哪个汇编器,哪个连接器?有很多原因可以解释为什么他们会制作自己的或支持通用的。但如果他们使用这个模型,他们至少必须选择一个来支持。从事编译器销售业务的人可能不仅想控制编译器,还想控制包括gui在内的所有工具链。他们要么从开源中获取,要么自己做,但控制自己的命运符合他们的最大利益。