杭杭州紫金港培训学校(紫金港专升本)
在职研究生计算机学科专业基础考前辅导第二章 计算机组成原理第 17 节 / 共 32 节约 30 分钟报名学员看全文

指令系统与机器级代码

掌握指令格式与扩展操作码的设计,各种数据寻址方式的有效地址与访存次数,大端、小端与对齐,CISC 与 RISC 的区别;能读懂 C 语言选择、循环结构和函数调用对应的 x86 机器级代码。

本节考点:指令格式寻址方式大小端与对齐CISC与RISC机器级代码

本节导读

大纲的「指令系统」列了:基本概念、指令格式、寻址方式、数据的对齐和大/小端存放、CISC 和 RISC 的基本概念、高级语言程序与机器级代码之间的对应(编译器、汇编器和链接器,选择结构、循环结构和过程调用的机器级表示)。

这一节常见的计算是扩展操作码能有多少条指令、各种寻址方式的有效地址;读代码题要求从汇编代码看出 C 语句在做什么。学完你应该能设计扩展操作码、算出有效地址,并能对照一段 x86 代码说出变量、参数和返回值分别在哪里。

指令格式

一条指令由操作码和地址码组成。按地址码个数分为零地址、一地址、二地址、三地址指令;指令长度可以固定(定长),也可以不固定。操作码长度固定,译码简单;扩展操作码让操作码长度随地址码个数变化:地址码少的指令把空出来的位用作操作码。

设计扩展操作码的规则:短操作码不能是长操作码的前缀。做法是每一级留出若干个编码不用,作为下一级的扩展前缀。若某一级操作码有 n 位、用了 k 个编码,则留给下一级的前缀有 2n−k2^{n} - k2n−k 个,每个前缀再接上多出来的 m 位,下一级最多有 (2n−k)×2m(2^{n} - k) \times 2^{m}(2n−k)×2m 条指令。

寻址方式

指令寻址:顺序执行时 PC 自动加上指令长度;遇到转移指令按指令给出的地址或偏移改写 PC。数据寻址方式如下,表中 A 为形式地址,EA 为有效地址,(X) 表示 X 的内容:

寻址方式有效地址或操作数取操作数时访存次数
立即寻址操作数就是 A0
直接寻址EA = A1
间接寻址(一次)EA = (A)2
寄存器寻址操作数在寄存器 R 中0
寄存器间接寻址EA = (R)1
相对寻址EA = (PC) + A,PC 是取指后已更新的值1
基址寻址EA = (BR) + A,BR 由操作系统设置,便于程序浮动1
变址寻址EA = (IX) + A,IX 由用户改变,便于处理数组1

还有堆栈寻址:操作数在栈顶,由栈指针 SP 隐含指出。相对寻址里的 A 是带符号的补码,可以向前或向后转移。

数据的对齐和大/小端存放

一个多字节数据按其最低字节的地址访问。大端方式把最高有效字节存在最低地址,小端方式把最低有效字节存在最低地址;x86 采用小端方式。例如 32 位数 0xA1B2C3D4 存在从 100 开始的单元里,大端时 100 至 103 依次是 A1、B2、C3、D4,小端时依次是 D4、C3、B2、A1。

对齐:数据存放的起始地址是它自身长度的整数倍(short 在偶数地址,int 在 4 的倍数地址),这样一次访存就能取到。C 语言的结构体按成员的对齐要求插入填充字节,结构体总长度还要是最大成员对齐长度的整数倍。例如 struct { char x; double y; } 在 8 字节对齐时,x 后面补 7 个字节,总长 16 字节。

CISC 和 RISC

比较项CISC(复杂指令系统)RISC(精简指令系统)
指令数量与功能多,功能复杂少,常用的简单指令
指令长度与格式变长,格式多定长,格式少
寻址方式多少
访存很多指令能访存只有取数(load)、存数(store)指令访存
通用寄存器较少较多
控制器多用微程序控制多用硬布线控制
流水线不易实现便于流水,多数指令一个周期完成

高级语言程序与机器级代码

编译器把 C 程序翻译成汇编程序,汇编器把它翻译成机器代码(目标文件),链接器把目标文件和库合并,并把符号引用确定成地址。下面用 x86 汇编(Intel 格式,目的操作数在左)看几种结构:

本节后面还有约 1589 字:报名学员看全文

每门课前 10 节免费看全文;从第 11 节起,完整教程要报名后由顾问在后台为你的账号开通才能看。

题库账号可以直接登录,但第 11 节起的完整教程要报名后由后台开通才能看。

学完练一练

按本节考点从本课的课后练习里抽题(每次 10 道以内),做完看解析、错题自动进错题本。第 11 节起的课后练习报名学员才能练。

本节内容由 AI 辅助编写,配图由 AI 生成,仅供备考参考;考试要求以《全国各类成人高等学校招生考试大纲(2024 年版)》及浙江省教育考试院当年公布为准。

我要提问免费报名咨询