2020 年 408 真题
2020 年 408 计算机组成原理 · 第 43 题
选中文字高亮 · 下划线
有实现 x×y 的两个 C 语言函数如下:
unsigned umul (unsigned x, unsigned y) { return x*y; }
int imul (int x, int y) { return x * y; }
假定某计算机 M 中 ALU 只能进行加减运算和逻辑运算。请回答下列问题。
(1) 若 M 的指令系统中没有乘法指令,但有加法、减法和移位等指令,则在 M 上也能实现上述两个函数中的乘法运算,为什么?
(2) 若 M 的指令系统中有乘法指令,则基于 ALU、移位器、寄存器以及相应控制逻辑实现乘法指令时,控制逻辑的作用是什么?
(3) 针对以下三种情况:
①没有乘法指令;
②有使用 ALU 和移位器实现的乘法指令;
③有使用阵列乘法器实现的乘法指令,
函数 umul() 在哪种情况下执行时间最长?哪种情况下执行的时间最短?说明理由。
(4)
n
位整数乘法指令可保存
2n
位乘积,当仅取低
n
位作为乘积时,其结果可能会发生溢出。当
n=32
、
x=231−1
、
y=2
时,带符号整数乘法指令和无符号整数乘法指令得到的
x×y
的
2n
位乘积分别是什么(用十六进制表示)?此时函数 umul() 和 imul() 的返回结果是否溢出?对于无符号整数乘法运算,当仅取乘积的低位作为乘法结果时,如何用
2n
位乘积进行溢出判断