程序的编译(上)

在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.终止程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值