Jason Pan

《深入理解计算机系统》笔记

潘忠显 / 2020-10-25


大小端的理解

整数表示

数据转换

有符号 跟 无符号比较,是将有符号转换为无符号,下边的代码会返回 true

cout << (INT_MAX < 0U - 1) << endl;

Integer conversion rank

指令集架构 ISA Instruction set architecture

常见的 IA32 机器代码中用到的一些变量:

程序计数器 PC %eip

整数寄存器变量 8个 每个存储32bit

条件码寄存器

浮点数寄存器

leal

addl

Intel Architecture, 32-bit,缩写为IA-32),常被称为i386、或x86,

链接器

符号解析 symbol resolution + 重定位 relocation

编译-汇编-链接

目标文件(不仅指.o文件)的基本事实:

编译器和汇编器产生的是可重定位目标文件(包括共享目标文件)

链接器产生的是可执行目标文件

目标模块/目标文件

ELF (Unix 可执行和可连接格式)

不小心 vim 一个ELF 文件

00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000  .ELF............
00000010: 0200 3e00 0100 0000 3004 4000 0000 0000  ..>.....0.@.....
00000020: 4000 0000 0000 0000 a818 0000 0000 0000  @...............
00000030: 0000 0000 4000 3800 0900 4000 1c00 1b00  ....@.8...@.....

符号表是由汇编器构造的,使用的是编译器输出到汇编语言 .s 文件中的符号。