【C++】编译链接运行原理

一、预编译

.i

处理 “#”
(1)删除#define,并作文件替换
(2)递归展开头文件(头文件里还可以嵌套)
(3)处理预编译指令( 如#if #endif)
(4)删除所有注释
(5)添加行号和文件名标识
(6)保留#pragma指令

二、编译

.s

(1)词法分析
(2)语法分析(一行表达式)
(3)语义分析(结合上下文)
(4)代码优化
(5)生成汇编指令 (仍是低级语言)

三、汇编

.o
翻译指令(把低级语言翻译成计算机语言)

四、链接

.exe
(1)合并段和符号表
(2)符号解析
(3)分配地址和空间:程序和虚拟地址空间的映射
(4)符号的重定位
链接阶段八成以上的错误都发生在符号解析过程中

五、运行

(1)建立虚拟地址空间和物理内存的映射(创建内核映射结构体),创建页目录页表
(2)加载指令和数据
(3)把程序的入口地址放到下一行指令寄存器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值