eveo
eveo

Reputation: 2833

Compiler functions and executables

Despite their seemingly disparate approaches to the development environment, both UNIX and Windows do share a common architectural back-end when it comes to compilers (and many many other things, as we will find out in the coming pages). Executable generation is essentially handled end-to-end on both systems by one program: the compiler. Both systems have a single front-end executable that acts as glue for essentially all 5 steps mentioned above.

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

What does this mean? That the compiler on one machine compiles the program (preprocessing -> parsing -> translation -> assembly -> linking) and on the other machine, the compiler also performs the same task but in reverse? Not sure exactly what is meant by "Executable generation is essentially handled end-to-end on both systems ... executable that acts as glue for essentially all 5 steps."

Upvotes: 1

Views: 93

Answers (2)

user529758
user529758

Reputation:

This is basically English reading comprehension, not programming.

Executable generation is essentially handled end-to-end on both systems.

This means that from the beginning to the end, from the plaintext source to the final executable, one program, the compiler does all the work.

executable that acts as glue for essentially all 5 steps.

Be it either GCC or MSVC, there's a driver, a kind of 'manager' executable that invokes the underlying preprocessor, parser, assembler and linker (these are CPP, cc1, as and ld in the case of GCC) executables. It's just an umbrella, a wrapper for its sub-programs.

I would, however, disagree with Win and Unix sharing a fundamental architecture. What they have in common is only the very basic stuff that can't really be done differently. E. g., they both have a kernel, they are capable of running on a Neumann-architecture computer, etc. Just as if the author said that car engines and hand mills share a common architecture merely because both are mechanical devices.

Upvotes: 3

David Brown
David Brown

Reputation: 13526

It means that on both windows and linux you usually only use one program to compile your code into an executable. You don't have to run a separate program to do preprocessing and another for translation and another for linking. That one executable performs the whole process "end to end."

Upvotes: 2

Related Questions