C++总复习--1--编译链接运行原理

C++总复习--1--编译链接运行原理

1.编译链接原理过程:

(1)预编译

(2)编译

(3)汇编

(4)链接

(5)运行

2.虚拟地址空间布局


1.编译链接原理过程:

ALU 的宽度:一次最多能处理的bit位为32 位或者64位

32:2^32大小内存

实模式和保护模式:为防止恶意篡改其他进程内容

编译链接运行原理:

(1)预编译            

#define,宏替换

删除宏定义并做文本替换

  #include

      递归展开头文件

  #if  #endif等  

预编译指令

删除注释

添加行号和文件标识

  保留#pragam的指令

(2)编译     .s

词法分析

语法分析

语义分析

代码优化    优缺点:提高效率  不可控

生成汇编指令

(3)汇编     .0    目标文件 可重入的二进制文件

翻译指令

项目:N多的源文件构造  前三个过程都是已编译单元整理的,分开的

汇编遗留的问题:

  1. 弱符号处理(只有C语言里有)
  2. 符号表:?Sun@@YAHHH@Z *UND* 外部符号
  3. 指令段:外部符号的地址  虚假地址||虚假偏移

(4)链接    .exe

合并段和符号表

符号解析

分配地址和空间

符号的重定位

(5)运行

创建虚拟地址空间和物理内存的映射(创建内核映射结构体)

       创建页目录,页表

  加载指令和数据

  (main)程序的入口地址写入到下一行指令寄存器

2.虚拟地址空间布局:

猜你喜欢

转载自blog.csdn.net/qq_41103495/article/details/107940632