CSAPP 学习随笔(1):Overview

程序的执行过程

  • 编辑代码:高级程序语言阶段
  • Compiler编译器:汇编代码(指令操作用助记符表示)
  • Assembler汇编器:将汇编代码转为机器指令(01字符串)
  • 执行机器代码,调度硬件,运行程序;

8086CPU

通用寄存器组GPRS

数据寄存器:

AX:累加器;
BX:基地址(Base);
CX:计数寄存器(Counter);
DX:数据寄存器;
地址寄存器:
SP:堆栈指针Stack Pointer;
BP:基址指针Base Pointer;
DI:目标地址Dest;
SI:源地址Source;

内部寄存器

CS:代码段code;和IP一起得到下一条指令的地址;
DS:数据段data;
SS:堆栈段;函数调用时的返回地址、局部变量和参数等;
ES:附加段:
IP:指令指针;总是指向当前正在执行的指令的下一条指令的偏移地址

标志寄存器:

OF:溢出标志Overflow;
DF:方向Direction;
IF:中断允许;
SF:符号( = 运算结果的最高位);
ZF:零标志(运算结果 = 0时,ZF = 1);
AF:辅助进位;
PF:奇偶(低8位满足偶校验,PF = 1);
CF:进位/借位;

  • 8086的地址总线为20,总共可寻址空间为$2^{20} = 2MB$;

一个完整程序的执行过程

  1. 从键盘上读取hello命令,即从键盘到I/O中继器再到CPU;
  2. 从磁盘(外存)加载可执行文件到主存(内存),在这之前CPU先向主存发送读取的指令;
  3. 执行程序,将输出字符串从存储器写到显示器,即CPU先从内存上获取字符串的地址存入寄存器,再控制I/O设备输出到图形化窗口;

CSAPP 学习随笔(1):Overview
https://blog.yokumi.cn/2025/01/03/CSAPP 学习随笔(1):Overview/
作者
Yokumi
发布于
2025年1月3日
许可协议
CC BY-NC-SA 4.0