在c语言程序的任何一种实现中,存在两个不同环境
1.翻译环境(编译器),在这个环境中源代码(test.c)被转换为可执行的机器指令(test.exe)
2.执行环境(操作系统),用于实际执行代码
————————————————————
一.翻译环境:
例如:
test.c
add.c 编译(编译器) 链接(链接器) test.exe
sub.c | 生成目标文件obj |
预编译(预处理),编译,汇编 链接
1.预编译(预处理): 1.合并段表
选项gcc -E test.c -o test.i 2.符号表的合并和重定位
与处理完成后就停下来,预处理之后
产生的结果都放在test.i文件中
1.头文件的包含
#include-预处理指令
2.define 定义符号的替换
#define-预处理指令
3.注释删除
以上三条是预编译做的事
,都是文本操作
2.编译:
选项gcc -S test.c
编译完成之后就停下来,结果保存在test.s中
把c语言代码翻译成汇编代码。
1.语法分析
2.词法分析
3.语义分析
4.符号汇总
3.汇编:
gcc -c test.c
编译完成之后就停下来,结果保存在test.o中
把汇编指令翻译成二进制指令。
形成符号表
二.执行环境:
程序执行的过程:
1.程序载入内存。在有操作系统的环境中,这个由操作系统完成
2.程序执行开始。
3.开始执行程序代码。
4.终止程序。
程序的编译(上)
最新推荐文章于 2024-07-13 12:01:25 发布