1

尽管 UNIX 和 Windows 在开发环境方面的方法看似完全不同,但在编译器(以及许多其他方面,我们将在接下来的页面中发现)时,它们确实共享一个共同的体系结构后端。可执行文件的生成基本上是由一个程序在两个系统上端到端处理的:编译器。两个系统都有一个单一的前端可执行文件,可以作为上述所有 5 个步骤的粘合剂。

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

这是什么意思?一台机器上的编译器编译程序(预处理->解析->翻译->汇编->链接)而在另一台机器上,编译器也执行相同的任务,但相反?不确定“可执行文件生成基本上是在两个系统上端到端处理......可执行文件基本上充当所有 5 个步骤的胶水”是什么意思。

4

2 回答 2

3

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

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

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

基本上所有 5 个步骤都充当胶水的可执行文件。

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

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

于 2012-10-27T22:19:37.237 回答
2

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

于 2012-10-27T22:19:17.607 回答