编译器函数和可执行文件

时间:2012-10-27 22:12:27

标签: c compiler-construction reverse-engineering

  

尽管他们看似不同的开发方法   环境,UNIX和Windows都共享一个共同的架构   关于编译器的后端(以及许多其他事情,就像我们一样   将在接下来的页面中找到)。可执行代是   基本上由一个程序在两个系统上端到端地处理:   编译器。两个系统都有一个前端可执行文件   胶水基本上是上述所有5个步骤。

on:http://www.savs.hcc.edu.tw/~chuavv/articles/RevEng/ch02.html#the_compiler

这是什么意思?一台机器上的编译器编译程序(预处理 - >解析 - >转换 - >汇编 - >链接),而在另一台机器上,编译器也执行相同的任务但反过来?不确定“可执行代的生成本质上是在两个系统上端到端地处理......可执行的,基本上是所有5个步骤的粘合剂。”

2 个答案:

答案 0 :(得分:3)

这基本上是英语阅读理解,而不是编程。

  

可执行生成基本上是在两个系统上端到端地处理。

这意味着从开始到结束,从明文源到最终可执行文件,一个程序,编译器完成所有工作。

  

可执行文件,作为基本上所有5个步骤的粘合剂。

无论是GCC还是MSVC,都有一个驱动程序,一种“管理器”可执行程序,它可以调用底层预处理程序,解析器,汇编程序和链接程序(这些是GCP中的CPP,cc1,as和ld)可执行文件。它只是一个保护伞,是其子程序的包装器。

但是,我会不同意Win和Unix共享一个基本架构。他们的共同点只是非常基本的东西,不能真正做到不同。例如,它们都有内核,它们能够在Neumann架构计算机上运行,​​等等。就好像作者说汽车引擎和手磨机共享一个共同的架构只是因为它们都是机械设备。

答案 1 :(得分:2)

这意味着在Windows和Linux上通常只使用一个程序将代码编译成可执行文件。您不必运行单独的程序来执行预处理,而另一个程序用于转换,另一个用于链接。那个可执行文件“端到端”执行整个过程。