返回主页

[计算机组成原理 P1109] 有实现x*y的两个C语言函数如下

 
学习人数: 4.6k
 
正确率: 100%
答案解析

题目描述
未通过

有实现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= 2^31−1 、y=2时,带符号整数乘法指令和无符号整数乘法指令得到的x×y的2n位乘积分别是什么(用十六进制表示)?此时函数umul()和imul()的返回结果是否溢出?对于无符号整数乘法运算,当仅取乘积的低位作为乘法结果时,如何用2n位乘积进行溢出判断?


上一题
下一题
加入错题本
个人笔记
已有12条笔记

登录后提交答案


暂无评论,来抢沙发