gpt4 book ai didi

c++ - 编译器功能的误解

转载 作者:搜寻专家 更新时间:2023-10-31 01:30:34 24 4
gpt4 key购买 nike

我研究了很多文章,了解Compiler生成Object CodeAssembly Code是否有冲突,甚至堆栈溢出。有人说 Compiler 生成 Object Code 而其他人说 Compiler 生成 Assembly Code 然后转换为 Object代码汇编程序 编写。两个答案都有赞成票。对此是否有任何澄清或理由。

最佳答案

最终,编译器必须以某种方式生成包含最终将出现在应用程序中的代码的目标文件,而链接器将来自目标文件和库(它们只是目标文件的集合)的代码组合起来以生成应用程序。所以说编译器生成目标文件并由链接器组合它们是正确的。

另一方面,编译器可以通过多种方式生成目标文件。一种方法是直接生成目标文件。另一种方法是生成汇编代码并运行汇编程序以生成目标文件。这引入了一些灵 active ,因为编译器不必知道目标文件如何布局的细节;汇编程序会这样做。另一种方法是生成 C 代码并在其上运行 C 编译器(它可以生成汇编代码并运行汇编程序)以生成目标文件。这就是 cfront 在过去的 C++ 时代的工作方式。这也是一些现代编译器前端的工作方式。例如,Edison Design Group 销售一个 C++ 前端,供应商可以将其连接到他们自己的后端以生成代码。他们还提供了一个生成 C 代码的版本,供在后端尚未运行时的编译器开发期间使用。通常在这些情况下,编译器会有一个开关来保留 C 或汇编程序文件,因此您可以检查它以了解发生了什么。

关于c++ - 编译器功能的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47675824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com