很重要的图

好好看!

预编译:处理预编译指令,如#if等、将所有的宏展开、处理#include指令、删除所有注释、添加行号和文件名标记、保留所有#pragma编译器指令

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

汇编:指令翻译成二进制

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

用户空间两个段存放数据:  .data   .bss

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

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

symtab符号表

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

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

强弱符号的规则:

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

2.一强一弱        选强符号

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

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

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

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

                   NORMAL   892M     内核映射结构体

                   HIGHMEN       116M      高端内存

猜你喜欢

转载自blog.csdn.net/August_25/article/details/84239738