140 likes | 240 Views
Today ’ s Topic. Breakdown of CC script. Today ’ s Objectives. Within context of “ compiling ” C program Define actions of linker, compiler, assembler, OS, macro preprocessor, loader Draw block diagram showing order of linker, compiler, assembler, OS, macro preprocessor, loader
E N D
Today’s Topic • Breakdown of CC script
Today’s Objectives • Within context of “compiling” C program • Define actions of linker, compiler, assembler, OS, macro preprocessor, loader • Draw block diagram showing order of linker, compiler, assembler, OS, macro preprocessor, loader • Explain why runtime stack needed for C • Draw logical division of memory into stack, heap • Compare and contrast stack and heap • For C program, indicate which variables are stored in heap; in stack; in neither
Breaking Down CC Preprocessed Source source ASM Compiler Assembler Preprocessor .s O B J E C T Executable Program In Memory Executable Loader Linker .o a.out
Breaking Down CC Preprocessed Source source ASM Compiler Assembler Preprocessor .s O B J E C T Executable Program In Memory Executable Loader Linker .o a.out
C Preprocessor (cpp) • Pass over source • Insert included files • Perform macro substitutions • Define macros • #define NUM 100 • #define xx(v,name,op,metrics) \ v=xxinit(op,name,IR->metrics) • gcc –E example.c sends preprocessor output to stdout
Breaking Down CC Preprocessed Source source ASM Compiler Assembler Preprocessor .s O B J E C T Executable Program In Memory Executable Loader Linker .o a.out
Compiler • gcc actually name of a script • Compiler translates one language to another (or the same???) • gcc compiler translates C to assembler • gcc –S example.c “saves” example.s • Compiler consists of • Parser • Code generation • Mysticism
Breaking Down CC Preprocessed Source source ASM Compiler Assembler Preprocessor .s O B J E C T Executable Program In Memory Executable Loader Linker .o a.out
Assembler • Another translator ??? (as example.s) • Assembler to (binary) object • Why not compile straight to binary? • gcc –c example.c to “save” object • NM to look at object (nm example.o)
Breaking Down CC Preprocessed Source source ASM Compiler Assembler Preprocessor .s O B J E C T Executable Program In Memory Executable Loader Linker .o a.out
Linker • Combine objects, both user .o files and libraries, make an executable • gcc *.o –lm yields a.out • gcc –o myExec *.o –lm • Use nm to look at object
Breaking Down CC Preprocessed Source source ASM Compiler Assembler Preprocessor .s O B J E C T Executable Program In Memory Executable Loader Linker .o a.out
Loader • Gets an address to place program • Changes necessary addresses (if any) • Places code into memory
Operating System • Oversees whole process • “Recognizes” gcc example.c command • Parses flags and arguments • Invokes gcc script • Performs memory mangagement (malloc) • Chooses “address” to place program