In a sense, the goal of this book is to help you understand what happens and why when you run hello on your system.
//The hello.c file.
#include <stdio.h>
int main()
{
printf("hello, world\n");
return 0;
}
1.1 Information Is Bits+Context
1)File categories.
Files such as hello.c that consist exclusively of ASCII characters are known as text files. All other files are known as binaryfiles.
2)C Programming Language
C was closely tied with the Unix operation system.
C is a small and simple language.
C was designed for a practical purpose.(Implement the Unix operation system)
ANSI: American National Standards Institute.
ISO: International Standards Organization.
1.2 Programs Are Translated by Other Programs into Different Forms
1)Different Forms
high-level C program which is also called source file to low-level machine-language instructions to executable object files.
2)Compilation system collection
preprocessor, compiler, assembler, and linker
3)Compilation system
Preprocessing phase. The preprocessors modifies the original C program according to directives that begin with the ‘#’ character. For example, the #include <stdio.h> command in line 1 of hello.c tells the preprocessor to read the contents of the system header file stdio.h and insert it directly into the program text.The result is another C program named hello.is.
Compilation phase. The compiler translates the text file hello.i into the text file hello.s, which contains an assembly-language program.Assembly language is useful because it provides a common output language for different compilers for different high-level languages(For example, C and Fortran).
Assembly phase.The assembler translates hello.s into machine-language instructions, packages them in a form known as a relocatable object program, and stores the result in the object file hello.o.
Linking phase.Merge printf.o with our hello.o into a new executable object file that is ready to be loaded into memory and executed by the system.
如圖: