四、指令系统
本章导览
共 5 个小节:指令格式、指令的寻址方式、程序的机器级代码表示、程序的机器级代码表示、CISC 和 RISC 的基本概念

本章重点
- 指令 = 操作码(OP)+ 地址码;按地址数分零 / 一 / 二 / 三地址指令
- 寻址方式:立即、直接、间接、寄存器、变址、相对等
- CISC(指令多而复杂,x86)vs RISC(指令少而规整、定长、流水友好)
指令格式

关键点
- 指令字段:操作码 OP(做什么)+ 地址码(操作数在哪)
- 地址数越少指令越短但功能越弱(零 ~ 三地址指令)
- 扩展操作码:在定长指令下兼顾不同地址数,操作码长度可变
指令的寻址方式

关键点
- 分指令寻址(顺序 PC+1、跳转改 PC)与数据寻址(找操作数)
- 数据寻址:立即、直接、间接、寄存器、寄存器间接、变址、基址、相对
- 核心是算有效地址 EA;相对寻址常用于转移指令
指令寻址

数据寻址

程序的机器级代码表示

关键点
- 三层对应:高级语言 ↔ 汇编 ↔ 机器码
- 常用 x86 汇编:mov、add、sub、cmp、jmp 等
- 两种语法:AT&T(源在前、寄存器带 %)vs Intel(目的在前)
程序的机器级代码表示

关键点
- 选择语句(if-else):用 cmp 比较 + 条件转移指令(je/jg/jl 等)实现
- 循环语句(for/while):条件转移 + 无条件跳转回循环体
- 控制流最终都靠「顺序执行 + 条件 / 无条件转移」完成
高级语言与机器级代码之间的对应

常用的 x86 汇编指令

AT&T 格式 & Intel 格式

选择语句的机器级表示

循环语句的机器级表示

CISC 和 RISC 的基本概念

关键点
- CISC(x86):指令多而复杂、变长、可直接访存,硬件复杂
- RISC(ARM/MIPS):指令少而规整、定长、只用 Load/Store 访存、寄存器多
- RISC 更利于流水线,是现代主流;一句话:CISC 指令强、RISC 执行快