Skip to content

四、指令系统

本章导览

共 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 汇编指令

常用的 x86 汇编指令

AT&T 格式 & Intel 格式

AT&T 格式 & Intel 格式

选择语句的机器级表示

选择语句的机器级表示

循环语句的机器级表示

循环语句的机器级表示

CISC 和 RISC 的基本概念

CISC 和 RISC 的基本概念

关键点

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