文章目录
欢迎到我个人博客查看本篇 https://sunmengxin.cn/CSCC/07-instruction-system/
思维导图:
![](https://i-blog.csdnimg.cn/blog_migrate/eb4d2eaca6856ee5e3c6859429d4bdbc.png)
课程进度:
![](https://i-blog.csdnimg.cn/blog_migrate/abe0e70eb8cc25d4993993d9b0d9b06e.png)
一、机器指令
1.指令的一般格式
![](https://i-blog.csdnimg.cn/blog_migrate/ca34cca5bb501e7206dffe981f8fc821.png)
操作码
-
长度固定
用于指令字长较长的情况 , RISC;如 IBM 370 操作码 8 位
-
长度可变
地址码
-
四地址、三地址
-
二/一/零地址
2.指令字长
指令字长决定于:
- 操作码的长度
- 操作数地址的长度
- 操作数地址的个数
指令字长固定:
指令字长 = 存储字长
指令字长可变:
按字节的倍数变化
3.总结
1.当用一些硬件资源代替指令字中的地址码字段后
- 可扩大指令的寻址范围
- 可缩短指令字长
- 可减少访存次数
2.当指令的地址字段为寄存器时
- 三地址 OP R1, R2, R3
- 二地址 OP R1, R2
- 一地址 OP R1
指令执行阶段不访存
可缩短指令字长
二、操作数类型和操作类型
1.操作数类型
- 地址:无符号整数
- 数字:定点数、浮点数、十进制数
- 字符:ASCII
- 逻辑数:逻辑运算
2.数据在存储器中存放方式
参考存储器:大端模式和小端模式
![](https://i-blog.csdnimg.cn/blog_migrate/07c1768a21df5583e424d12114d6582d.png)
从任意位置开始存储
![](https://i-blog.csdnimg.cn/blog_migrate/31c91948e774b5e70bbb39c17698caa0.png)
从一个存储字的起始位置开始访问
![](https://i-blog.csdnimg.cn/blog_migrate/932ccbfe2387ea873b368f397c94c7b8.png)
边界对准方式——从地址的整数倍位置开始访问
![](https://i-blog.csdnimg.cn/blog_migrate/d67aea9e6cf537ddcd1181e09369391d.png)
对比
优点 | 缺点 | |
---|---|---|
任意位置 | 不浪费存储资源 | 除了访问一个字节之外,访问其它任何类型的数据,都可能花费两个存储周期的时间。读写控制比较复杂 |
起始位置 | 无论访问何种类型的数据,在一个周期内均可完成,读写控制简单 | 浪费了宝贵的存储资源 |
边界对准 | 数据存放的起始地址是数据长度的整数倍 | 本方案是前两个方案的折衷 |
3.操作类型
数据传送
![](https://i-blog.csdnimg.cn/blog_migrate/932d0ed0198c3c86c736986836b3e49a.png)
算术逻辑操作
![](https://i-blog.csdnimg.cn/blog_migrate/b280ed364d75453301a8adbde2a4a49e.png)
移位操作
算术移位 逻辑移位
循环移位(带进位和不带进位)
转移
-
无条件转移 JMP
-
条件转移
-
调用和返回
-
陷阱(Trap)与陷阱指令
意外事故的中断:
一般不提供给用户直接使用
在出现事故时,由 CPU 自动产生并执行(隐指令)
设置供用户使用的陷阱指令
如 8086 INT TYPE 软中断
提供给用户使用的陷阱指令,完成系统调用 -
输入输出
三、寻址方式
1.指令寻址
-
顺序 :
(PC) + 1 —— PC
-
跳跃 : 由转移指令指出
2.数据寻址
![](https://i-blog.csdnimg.cn/blog_migrate/29222695a5c84ce5ed38f3d4e2d12e9d.png)
形式地址: 指令字中的地址
有效地址: 操作数的真实地址
约定 指令字长 = 存储字长 = 机器字长
1.立即寻址
![](https://i-blog.csdnimg.cn/blog_migrate/8f67a5631c6946c290f630740633e165.png)
2.直接寻址
![](https://i-blog.csdnimg.cn/blog_migrate/2264ad2f41b463005e222d72b045a279.png)
3.隐含寻址
![](https://i-blog.csdnimg.cn/blog_migrate/2ef2336852d63de39f4509307f597e9a.png)
4.间接寻址
![](https://i-blog.csdnimg.cn/blog_migrate/20c9b84079e4b2252a9313f00a0f24d8.png)
5.寄存器寻址
![](https://i-blog.csdnimg.cn/blog_migrate/550e402aa0b8cf4172f7c4558489bc41.png)
6.寄存器间接寻址
![](https://i-blog.csdnimg.cn/blog_migrate/8fd3a1eaa7defb9703074a4abb438e56.png)
7.基址寻址
-
采用专用寄存器作基址寄存器
-
采用通用寄存器作基址寄存器
8.变址寻址
![](https://i-blog.csdnimg.cn/blog_migrate/11eaa293f963a84e8bbc2d78896c398d.png)
9.相对寻址
![](https://i-blog.csdnimg.cn/blog_migrate/71046fc0de05f8c6391b3270e29deba8.png)
10.堆栈寻址
![](https://i-blog.csdnimg.cn/blog_migrate/a63f32c9ef503a4a0cbaab326fb391b4.png)
四、指令格式举例
1.设计指令
指令系统的 兼容性
其他因素
- 操作类型:包括指令个数及操作的难易程度
- 数据类型:确定哪些数据类型可参与操作
- 指令格式:
- 指令字长是否固定
- 操作码位数、是否采用扩展操作码技术,
- 地址码位数、地址个数、寻址方式类型
- 寻址方式:指令寻址、操作数寻址
- 寄存器个数:寄存器的多少直接影响指令的执行时间
2.指令格式举例
**Intel 8086 **
![](https://i-blog.csdnimg.cn/blog_migrate/0cc34642fde8640bddd2b4bdf547853c.png)
五、RISC技术
1.RISC的产生和发展
![](https://i-blog.csdnimg.cn/blog_migrate/6bcd284badade35420851ec3c2fde34b.png)
2.RISC的主要特征
![](https://i-blog.csdnimg.cn/blog_migrate/55c30272393edbd4b9fae2963cdf47ed.png)
3.CISC的主要特征
![](https://i-blog.csdnimg.cn/blog_migrate/8e414960fd78588881006b32bd11f636.png)
4.RISC和CISC的比较
![](https://i-blog.csdnimg.cn/blog_migrate/dd335f98be13f936738a655a703b3ea8.png)
注:本文章除思维导图,其他图片来源于课程PPT。
👇您的赏识是我前进的动力!٩(๑•̀ω•́๑)۶😜