计算机指令集与操作详解
1. 条件指令执行
在早期,计算机只能按严格顺序逐条执行指令。为了实现更复杂的功能,需要让计算机能够执行条件分支或跳转指令,例如 BEQ Target(当零标志位设置时跳转到 Target)。
为了实现条件分支,计算机需要添加一些组件:
- 条件码寄存器(CCR):记录每条指令执行后 ALU 的状态,并更新进位、负、零和溢出标志位。
- CCR 与控制单元之间的路径:使指令能够查询 CCR 的标志。
- 指令寄存器的地址字段与程序计数器之间的路径:让计算机能够根据 CCR 的查询结果做出响应。
CCR 各标志位的功能如下:
- C = 进位:当 n 位运算产生 n + 1 位结果时设置。例如,在 8 位计算机中,11111111 + 1 = 0000000 进位 1。
- Z = 零:如果最后一次操作结果为零,则设置该标志。
- N = 负:如果最后一次操作结果在二进制补码运算中为负,则设置该标志。
- V = 溢出:如果最后一次操作导致算术溢出,则设置该标志。为了简化,通常不实现 V 标志。
条件分支指令通过查询 CCR 的标志来决定是否跳转。例如,BCS(进位设置时跳转)指令会测试 CCR 的进位位,如果该位被设置,则跳转到指令寄存器中指定的目标地址;否则,按正常方式获取下一条指令。
分支操作可以用寄存器传输语言(RTL)表示,例如:
- 进位清除时分支(如果 CCR 中的进位位为 0,则跳转到目标地址):
BCC target: IF [C] =
超级会员免费看
订阅专栏 解锁全文
28万+

被折叠的 条评论
为什么被折叠?



