是不是所有的编程语言都有汇编程序?
Does all the programming languages have assemblers
我发现Go语言有自己的汇编器,C语言的各种编译器都有自己的汇编器,如Turbo C, LCC, OpemWatcom。但有些只是汇编程序,如nasm、gas等。为什么高级语言的编译器带有汇编器,如果编译器必须将源代码转换为汇编代码,那么所有的编程语言都必须有自己的汇编器。
号所有的编程语言都有汇编程序吗
现代c++编译器可以直接输出机器码(或llvm的中间目标代码),而不需要生成汇编。汇编程序是可选的,如果存在,它是作为程序员检查代码的方便工具提供的。
一辆车只能由一名司机驾驶吗?不。汽车是组装器,可以为多个驾驶员制造。
发明一种既能记录指令集机器码又能记录汇编语言的处理器符合公司的最大利益。汇编语言不是一种通用的东西,它是非常特定于每个汇编程序的,即解析它并将其转换为机器代码的程序。因此,处理器供应商的文档应该使用某种汇编语言使文档具有可读性。促进新处理器创建或雇用某人创建汇编程序和其他工具符合他们的最大利益,但是您总是必须创建汇编程序,如果不是为了验证处理器。因此泛型汇编程序将存在。
编译器供应商当然可以选择支持一个通用的,一个竞争的,或者自己的或任何组合。做出这些选择的原因有很多。由于各种原因,一些编译器可能选择不生成汇编语言作为中间步骤,而是直接生成机器码。
典型的泛型可重目标编译器倾向于支持编译器-汇编器-链接器模型。他们可能会做得更多,但会倾向于这种模式。又是哪个汇编器,哪个连接器?有很多原因可以解释为什么他们会制作自己的或支持通用的。但如果他们使用这个模型,他们至少必须选择一个来支持。从事编译器销售业务的人可能不仅想控制编译器,还想控制包括gui在内的所有工具链。他们要么从开源中获取,要么自己做,但控制自己的命运符合他们的最大利益。相关文章:
- 在调用接收数组的方法时,模板化数组大小是不是一种糟糕的做法
- 在C++中使用变量而不是"#define"来指定数组大小是不是一种糟糕的做法?(C错误:在文件范围内
- 为什么编程语言被编译为汇编程序而不是二进制?
- 在枚举类型上使用std::max是不是一种糟糕的做法
- std::元组大小,是不是错过了优化?
- 拥有相同方法的静态和非静态版本是不是设计不好
- 他是不是很贪婪
- SDL2:移动所有东西而不是使用视图端口是不是很糟糕
- OOP-我是不是把事情复杂化了
- 在DLL中分配内存并将其指针提供给客户端应用程序,这是不是一种糟糕的做法
- 在C++代码中使用C风格的注释是不是一种糟糕的做法
- 如果我在C++中使用堆,我是不是做错了什么
- 这个简单但有用的模式是不是太简单了,不可能成为一个真正的模式
- 在C++中,通过引用传递常量布尔值是不是不好的
- 在main.cpp中而不是在头文件中定义函数是不是一种糟糕的做法
- 既然智能指针已经存在,那么使用C型指针是不是已经过时了
- LNK2019:未解析的外部符号;我是不是忘了
- 重载一个函数同时获取指针或引用是不是一种糟糕的做法
- 如何强制 clang 使用 llvm 汇编程序而不是系统
- 是不是所有的编程语言都有汇编程序?