组成原理
2025-44
对于题 43 中的计算机 M 和程序 P,假定 P 的部分机器级代码如下,其中 R0~R4 为通用寄存器,SEXT 表示按符号扩展;M 中补码除法器的逻辑结构如图所示。
...
// x 在 R2 中,i 在 R4 中
// 数组 d 的首地址在 R3 中
mov R1, (R3 + R4 * 4) // R1 <- d[i]
scov R1 // {R0, R1} <- SEXT(R1)
idiv R1, R3 // R1 <- ({R0, R1} / R2)
...
请回答下列问题,并说明理由:
(1) 若执行 idiv 指令的除运算时,d[i]=0x87654321,x=0xFF,则补码除法器中寄存器 R、Q 和 Y 的初始内容分别是什么(用十六进制表示)?图中哪个部件包含计数器?在补码除法器执行过程中,由 ALUop 所控制的 ALU 运算有哪几种?(4 分)
(2) 假设 idiv 指令执行过程中会检测并触发除法异常,则执行 idiv 指令时,哪些情况会发生除法异常(要求给出此时 d[i] 和 x 的十六进制机器数)?发生除法异常时,在异常响应过程中 CPU 需要完成哪些操作?(5 分)
答案
(1)R=FFFFFFFFH,Q=87654321H,Y=000000FFH。控制逻辑计数器 Cn 中包含计数器。控制的运算有加法和减法两种。
(2)两种情况会发生除法异常:
- x 为 0000 0000H 时,发生除 0 异常,此时 d[i] 可以是表达范围内的任意值;
- d[i]=8000 0000H 时,发生溢出异常,此时 x=FFFF FFFFH。
异常响应过程中 CPU 需要完成的操作为:
- 保存断点和程序状态;
- 关中断;
- 跳转到异常处理程序执行。