C++程序的简单执行过程
来源:互联网 发布:知乎 刘备 王者 编辑:程序博客网 时间:2024/05/29 12:17
编译阶段:
main.c---预编译--->main.i----编译-->main.s----汇编--->*.o/*.obj(二进制可重定位目标文件)
预编译:删注释,#:预编译指令
编译:语法、语义分析,代码的优化,汇总所有的符号
汇编:把汇编指令转化成特定平台的机器码
数据产生符号。
指令只产生一个符号(函数名)。
链接阶段:
1.合并所有obj文件的段(所有相同属性的段进行合并,组织在一个页面上),并调整段偏移和段长度,合并所有符号表进行符号解析(所有obj符号表中对符号引用的地方都要找到该符号定义的地方),分配内存地址
2.符号的重定位(链接的核心)。
main.o文件组成格式:
强符号:已初始化的,在代码中不能出现同名的强符号
弱符号:未初始化的
程序的运行---》进程
./a.out
1、创建虚拟地址空间到物理内存的映射(创建内核地址映射结构体),创建页目录和页表。
2、加载代码段和数据段
3、把可执行的文件入口地址写到CPU寄存器里面
阅读全文
0 0
- 简单C语言程序的执行过程
- C程序的执行过程
- c程序的执行过程
- C++程序的简单执行过程
- C 程序的执行过程 - 2016.01.01
- C/CPP程序的执行过程
- C程序编译执行过程
- C 程序编译执行过程
- C程序编译执行过程
- C程序编译执行过程
- C程序编译执行过程
- C程序编译执行过程
- C程序编译执行过程
- C程序编译执行过程
- C程序编译执行过程
- C程序编译执行过程
- C程序编译执行过程
- C程序编译执行过程
- 博弈类题目小结(HDU,POJ,ZOJ)
- 【Java概念】static(12)
- DFS:POJ1562-Oil Deposits(求连通块个数)
- Handler、Looper、Message随笔
- 字节对齐实例
- C++程序的简单执行过程
- 统计相关系数(2)——Spearman Rank(斯皮尔曼等级)相关系数及MATLAB实现
- 线段树 poj2528 Mayor's posters
- 论文记录_MobileNets Efficient Convolutional Neural Networks for Mobile Vision Application
- 【实践课】PB问题记录
- Java中中的异常、异常的分类
- <span>的用途
- 矩阵快速幂模板(mark)
- Window函数库以及hz2016.space的开源