经典永流传
文章平均质量分 50
书籍
叫帅帅就好
这个作者很懒,什么都没留下…
展开
-
第四章 静态链接
4.1 空间和地址分配 4.1.1按序叠加 去掉头尾,每个目标文件依次合并。 问题:有多个零散的段,浪费空间;地址和空间对齐要求,造成大量内存碎片。 4.1.2相似段合并 (目前都用这种) 1.空间与地址分配:将所有目标文件的符号放进一个全局符号表,计算输出文件各个段合并后的长度和位置,建立映射关系 2.符号解析和重定位 4.1.3符号地址确定 得到初始虚拟量地址,在得到偏移量,可以计算各个符号(函数和变量)的地址。 4.2 符号解析和重定位 4.2.1重定位 ...原创 2021-12-09 15:34:35 · 373 阅读 · 0 评论 -
第三章 目标文件里有什么
3.1目标文件定义 源代码编译但未链接的中间文件。 根据定义 库也是和目标文件一个格式(linux下ELF),库一起和编译后的源代码链接 3.2目标文件构成 编译后源代码放在代码段(.text)、初始化全局变量和静态局部变量保存在数据段(.date)、未初始化的全局变量和静态局部变量保存.bss段(因为未初始化的变量默认0,放在数据段占内存空间) 编译后代码被放到代码段和数据段分开存放优点: 1.代码段设置可读,数据段设置可读写,防止程序指令被误改; 2.cache分成指令缓存和数据缓存,有利于提高cac原创 2021-11-23 11:11:31 · 119 阅读 · 0 评论 -
第二章 编译和链接
2.1 被隐藏的过程 :预处理 编译 汇编 链接四个过程 预处理:现象就是.c文件变为.i文件 C++就是变为.ii文件 实际内涵就是#define删除,所有宏定义替换源代码里的内容等一些带#的代码处理和注释删除。行号和文件标识也是现在弄的,调试方便定位位置。 编译 现象就是.i变.s 进行语法分析、语义分析以及优化后生产的相应的汇编代码文件,这是核心部分。 汇编 .s 变.o 照着汇编表 一句汇编对应一句机器指令。 链接 看静态链接部分 2.2 编译器做了什么 思原创 2021-11-14 11:54:19 · 288 阅读 · 0 评论 -
第一章 温故知新
“hello world”引发的思考: 1.程序为什么编译后才能运行? 2.编译过程? 3.编译出来的可执行文件是什么?怎么存放,组织的 4.C语言库是什么? 硬件主要:CPU 内存 I/O控制芯片(慢速的I/O设备和快速CPU实现交互) CPU主频 目前最高4GHZ 受限于制造工艺 计算机体系:计算机科学领域任何问题都可以通过增加一个间接的中间层解决 系统调用接口通常通过中断实现 操作系统:尽可能压榨计算机硬件潜力 1.CPU 多任务系统 2.设备驱动 硬件驱动可看成操作系统一部分,和内核一起运原创 2021-11-06 12:20:43 · 102 阅读 · 0 评论