我对编译步骤知之甚少。据我了解,当我点击我的IDE的编译按钮时,这是预处理,编译(创建汇编代码),创建二进制代码(目标文件)然后链接的阶段。 但是为什么编译器不直接从预处理转到二进制文件? (因为基本上这只是转换为1和0而不选择处理器将如何处理事情 - >在编译步骤中完成)。
答案 0 :(得分:0)
现在已经多次询问和回答了这个问题......
基本工具是汇编程序和链接器,编译器需要一些程序集,确保有人可以用机器代码编写,但是你可能有一个汇编程序。你需要一个链接器。不在纸上使用汇编语言或者甚至采用简单的程序并直接在机器代码中编写。然后使用汇编语言编写相同的程序并组装它。哪个程序员更容易出错?您是否宁愿尝试编写和调试并维护一个输出机器代码或汇编语言的编译器?您很可能会有一个可用的汇编程序和链接器。
因此,名称工具链,编译,汇编,链接...与gcc,例如它实际上是一些程序只是为了编译然后你得到汇编和链接。
例外的是那些真正想跳过tcc这样的步骤的人。那些爬山的人只是因为它在那里,而不是四处走动。或者也许正好像llvm一样及时做,但我敢打赌他们实际上并没有及时跳过这一步。与使用它作为编译器的人数相比,谁将llvm用于JIT? llc现在有一个直接对象选项,但它是实验性的,不确定它们是如何做到的,还没有研究过。