很重要的图

 

好好看!

我们首先要了解代码文件的编译运行分为四步:

预编译:1.将所有的“#define”删除,并展开所有的宏定义

               2.处理所有的条件编译指令,如“#if”、“#ifdef”、“elif”、“else”、“#endif”

               3.处理“#include”指令,将被包含的文件插入到该预编译指令的位置

               4.删除所有注释“//”、和“*/”、“/*”

               5.添加行号和文件名标识

               6.保留所有的#pragma编译器指令

编译:词法分析、语法分析、语义分析、代码优化

汇编:指令翻译成二进制

链接:合并段和符号表符号解析、分配地址和空间、符号重定位

我们了解一下symtab符号表

强符号:全局已初始化的符号

弱符号:全局未初始化的符号

强弱符号的规则:

1.两个强符号     重定位错误

2.一强一弱        选强符号

3.两个弱符号     选数据较大的

强符号放*COM*       弱符号放*UND*

符号解析:在外部符号应用的地方找到符号定义的地方

 

然后我们来看上图:

首先我们看用户空间,用户空间两个段存放数据:  .data   .bss

.data段 :     放已初始化且初始化不为0的数据

.bss段:    未初始化或初始化为0的数据

之后是内核部分:   DMA      16M     直接内存访问

                   NORMAL   892M     内核映射结构体

                   HIGHMEN       116M      高端内存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值