1. 程序语言设计
1.1机器语言
直接使用机器指令(0,1序列)来设计程序,可以被计算机系统直接识别。和自然语言完全不同,难于记忆和理解,工作量大,效率低,无法移植
机器语言是二进制,例如:
00011000
00110001
00011001
1.2汇编语言
把机器指令符号化,即通过一组简单的的符号来表示机器指令,更接近于自然语言,更容易理解和使用。 不能被计算机系统直接识别,要转化成机器语言后才能执行。和机器语言一样,开发工作量大,无法移植。
如:
MOV A, 1000
MOV 1010, A
1.3高级语言
和特定的计算机系统无关,更接近于人类自然语言。一条语句对应多条机器指令,工作量小,开发效率高。同样需要转换成机器代码后才能被计算机系统识别、执行。 BASIC , FORTRAN, PASCAL, C, C++ 。
gcc
gcc(GNU CCompiler)是GNU推出的功能强大,性能优越的多平台编译器,gcc编译器能将C,C++语言源程序编译连接成可执行文件
2.1预处理
gcc -E wang4.c -o wang4.i 得到预处理文件,其中,-E 表示只进行预编译。
源文件在预编译阶段会被编译器生成.i文件,主要处理源代码文件中以“#”开头的预编译指令。如:宏定义展开,将被包含的文件插入到该编译指令的位置等。
2.2编译
gcc -S wang4.i -o wang4.s 得到汇编文件,其中,-S 表示生成汇编文件。
编译就是把预处理完的文件,进行语法分析、词法分析、语义分析及优化后生成相应的汇编代码文件,这个过程是整个程序构建的核心过程,也是最复杂的部分。
2.3汇编
gcc -c wang4.s -o wang4.o -c 表示只编译不链接。
将汇编代码文件转变成机器可以执行的指令文件,即目标文件。也可以直接使用:gcc -c hello.c -o hello.o 经过预处理、编译、汇编直接输出目标文件
2.4链接
gcc wang4.o -o wang4是将各种代码和数据片段收集并组合成为一个可执行文件的过程,这个文件可被加载(复制)到内存并执行。
-o 文件名,如果不给出这个选项,gcc就给出预设的可执行文件a.out。