2017 全国硕士研究生入学统一考试

计算机学科专业基础2017 真题档案

47道题150满分
00:00
BOK 组成原理
组成原理

2017-44

综合题10 分

补充条件(来源:2017 年第 43 题)

已知 f(n)=∑i=0n2i=2n+1-1=(11…1)2,计算 f(n) 的 C 语言函数 f1 如下:

int f1(unsigned n){
    int sum=1, power=1;
    for(unsigned i=0; i<=n-1; i++){
        power *= 2;
        sum += power;
    }
    return sum;
}

将 f1 中的 int 都改为 float,可得到计算 f(n) 的另一个函数 f2。假设 unsigned 和 int 型数据都占 32 位,float 采用 IEEE 754 单精度标准。

本题题干

在按字节编址的计算机 M 上,题 43 中 f1 的部分源程序(阴影部分)与对应的机器级代码(包括指令的虚拟地址)如下图所示。

题44图 f1 的部分源程序与机器级代码

其中,机器级代码行包括行号、虚拟地址、机器指令和汇编指令。请回答下列问题。

(1)计算机M是RISC还是CISC?为什么?
(2)f1的机器指令代码共占多少字节?要求给出计算过程。

(3)第20条指令cmp通过i减n-1实现对i和n-1的比较。执行f1(0)过程中,当i=0时,cmp指令执行后,进/借位标志CF的内容是什么?要求给出计算过程。

(4)第 23 条指令 shl 通过左移操作实现了 power *= 2 运算,在 f2 中能否也用 shl 指令实现 power *= 2?为什么?

44