编译器函数中的误解
Misconception in Compiler's function
我研究了许多文章,以了解编译器是否生成对象代码或 assembly Code 冲突,即使在堆栈溢出中也是如此。有些人说编译器生成对象代码,而另一些则说 compiler 生成 assembly Code ,然后将其转换为对象代码 by 汇编器。这两个答案都有上投票。是否有任何澄清或理由。
最终,编译器必须以某种方式与将最终在应用程序中最终出现的代码产生对象文件,并且链接器从对象文件和库中结合了代码(这只是对象的集合文件)生成应用程序。因此,可以说编译器生成对象文件,并且链接器将它们结合在一起是正确的。
另一方面,编译器可以通过多种方式生成对象文件。一种方法是直接生成对象文件。另一种方法是生成汇编代码并运行汇编程序以生成对象文件。这引入了一些灵活性,因为编译器不必知道如何布置对象文件的细节;汇编器这样做。另一种方法是生成C代码并运行C编译器(又可以生成汇编代码并在其上运行汇编器)以产生对象文件。这就是Cfront在C 的过去工作。这也是一些现代编译器前端的工作方式。例如,爱迪生设计集团(Edison Design Group)出售C 前端,供应商可以将其连接到自己的后端以进行代码生成。他们还提供了一个生成C代码的版本,在后端尚未正常工作时在编译器开发过程中使用。通常,在这些情况下,编译器将具有一个开关以保持C或汇编器文件,因此您可以检查它以查看正在发生的事情。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 误解可变参数模板函数
- 编译器函数中的误解
- 我应该将分配器作为函数参数传递吗?(我对分配器的误解)
- 误解了 std::runtime_error 的 what() 函数
- 我对 c++ 纯虚函数和接口的误解
- C++ 对二项式共效递归函数的误解
- 默认构造函数被误解为函数名称
- 误解了虚函数在向量中工作
- 虚函数调用中的误解