7.2指令系统设计
1.操作数和寻址方式
数据类型
- 地址(指针):无符号整数,寄存器编号
- 数值数据
- 定点数:一般二进制补码
- 浮点数:IEEE754标准
- 十进制数:NBCD码
- 位、位串、字符、字符串
用来表示文本、声音、图像 - 逻辑(布尔)数据
操作数存放在寄存器或内存单元中,也可以立即数的方式直接出现在指令中
寻址方式
寻址方式:指令或操作数地址的指定方式
地址码编码由操作数的寻址方式决定
指令的寻址——简单
- 正常:PC增值
- 跳转(jump、branch、call、return):与操作数的寻址相同
操作数寻址——复杂
- 操作数来源:寄存器、栈顶、IO端口
- 操作数结构
寻址方式的确定
- 没有专门的寻址方式位(由操作码确定)
- 有专门的寻址方式位
有效地址的含义(存放在内存中才涉及)
- 操作数所在存储单元的地址
- 可通过指令的寻址方式和地址码算出有效地址
基本寻址方式
A = 地址字段值 R = 寄存器编号 EA = 有效地址 (X)= X中的内容
- 立即数
- 直接
- 间接
- 寄存器直接
- 寄存器间接
- 偏移:EA = A + (R)
- 相对寻址:指令地址码给出一个偏移量(带符号数),基准地址R隐含由PC给出:EA = (PC) + A
可用来实现程序的浮动或指定转移目标地址 - 基址寻址:基址地址R明显或隐含由基址寄存器B给出:EA = (B) + A
- 变址寻址:指令地址码给出一个基准地址,偏移量是无符号数,由R明显或隐含由变址寄存器I给出:
EA = (I) + A
可用于数组寻址
- 相对寻址:指令地址码给出一个偏移量(带符号数),基准地址R隐含由PC给出:EA = (PC) + A
- 栈
2.操作类型和操作码编码
- 操作码编码
- 定长操作码法
- 扩展操作码编法
- instructions size
- 代码长度更重要时:采用变长指令字、变长操作码
- 性能更重要时:采用定长指令字、定长操作码
- 下一条指令
- 正常情况隐含在PC中——顺序执行
- 改变顺序时由指令给出
- 指令中显示给出“下条指令地址”
- 条件转移指令:根据Condition Codes转移
3.标志信息的生成与使用
4.指令系统风格
- 累加器型指令系统
- 栈型指令系统
- 通用寄存器型指令系统(CISC)
- Load/Store型指令系统(RISC)
5.异常和中断处理
中断:CPU终止原来正在执行的程序,转到处理异常情况或特殊事件的程序去执行,结束后再返回断点继续执行
内部异常:CPU内部发生的意外事件或特殊事件
- 硬故障中断:电源断电等
- 程序性中断:溢出、非法指令、除数为0等
外部中断:通过中断请求信号向CPU发出请求
- 如打印机缺纸等
- Title: 7.2指令系统设计
- Author: SyEic_L
- Created at : 2025-04-19 17:42:45
- Updated at : 2025-04-19 17:42:45
- Link: https://blog.syeicl.vip/2025/04/19/7-2指令系统设计/
- License: This work is licensed under CC BY-NC-SA 4.0.
推荐阅读
推荐阅读
Comments