自我修养--基础知识
第一章 温故而知新
- CPU与外围设备的连接方式
北桥,南桥 - SMP、多核、软硬件的层次体系结构
SMP(对称多处理)即每个CPU在系统中所处的地位和发挥的作用都是一样的,是相互对称的。理论上讲,增加CPU的数量就可以提高运行速度,但是实际上我们的程序并不能分解成完全不相干的子问题,也就不能明显提高速度。 - 虚拟空间、物理空间、页映射(分页技术)、线程
- 预编译、编译、汇编、链接
GCC中这四个过程的实践
预编译程序cc1
汇编器as
链接器ld
- 词法分析
源程序--->扫描器--->FSM--->分割成一系列记号
lex
(一个生成扫描器的工具)可以实现词法扫描。LEX&YACC文档教程
编译器的开发者无需开发一个独立的词法扫描器,而是只要根据需要改变词法规则即可。 - 语法分析
语法分析器对由扫描器产生的记号进行语法分析,从而产生语法树。编译器会报告语法分析阶段的错误。(如表达式不合法,缺少操作符,括号不匹配)
语法分析工具YACC - 语义分析
语义分析器分析静态语义(判断语句是否真正有意义)。(与之对应的动态语义是只有在运行期才能确定的语义)
静态语义通常包括声明和类型的匹配,类型的转换。
经过语义分析阶段后,整个语法树的表达式都被标识了类型 - 中间语言生成
源码级优化器将语法树转换成中间代码(接近目标代码,但一般和目标机器和运行时环境无关)
中间代码使得编译器可以分为前端和后端。前端产生和机器无关的中间代码,后端将中间代码转为目标机器代码。 - 目标代码生成和优化
编译器后端主要包括代码生成器(将中间代码转换为机器代码)和目标代码优化器。 - 链接器
链接过程:
地址和空间分配
符号决议
确保所有目标文件中的符号引用都有唯一的定义更多关于符号决议的解释
重定位
重新计算各个目标的地址
- 目标文件的格式
可执行文件格式: Windows中的PE和Linux中的ELF(都是COFF(Common file format)的格式变种)
不常见: Intel/Microsoft的OMF、Unix的a.out和MS-DOS .COM格式
动态链接库和静态链接库都按照可执行文件格式存储。
ELF文件标准中把系统中采用的ELF格式的文件分为四类
ELF文件类型 | 说明 | 实例 |
---|---|---|
可重定位文件 Relocatable File | 包含代码和数据,可用于链接成可执行文件或共享文件,静态链接库也可以归为这一类 | Linux的.o Windows的.obj |
可执行文件 Executable File | 包含了可以直接执行的程序 | /bin/bash文件 Windows的.exe |
共享目标文件 SharedObject File | 包含程序和数据,可在两种情况下使用:1.链接器使用这种文件跟其他可重定位文件与共享目标文件链接,产生新的目标文件。2.动态连接器可以将几个共享目标文件和可执行文件结合,作为进程映像的一部分来运行 | Linux的.so Windows的DLL |
核心转储文件 Core Dump File | 当进程意外终止时,系统可以将该进程的地址空间的内容及终止时的其他信息转储到核心转储文件 | Linux的core dump |
file
命令查看相应的文件格式推荐阅读
- 改变自己,先从自我反思开始
- 关于自我为中心的一点感想
- 《自我的追寻》读书笔记3
- “大脑”能自我调节吗()
- 干货来袭(自我管理(来几款撩人的APP))
- 故事//出差前VS出差后分裂的自我
- 如何理解“超我、自我、本我”
- 今日自我介绍,感恩所遇一切
- 杨梦彤自我介绍
- 微信小程序基础知识