自我修养--基础知识

第一章 温故而知新

  • 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
【自我修养--基础知识】在Linux下可以使用file命令查看相应的文件格式

    推荐阅读