组成原理
2017-44
在按字节编址的计算机 M 上,题 43 中 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?为什么?
答案
(1)计算机M是CISC。因为其指令长短不一,不符合RISC指令系统特点。
(2)f1的机器指令代码共占96字节。计算过程:第一条指令地址为00401020H,最后一条指令ret地址为0040107FH,长度 = 0040107FH - 00401020H + 1 = 60H = 96字节。
(3)CF=C=1。执行 f1(0) 时,n=0、i=0、n-1=FFFFFFFFH。cmp 执行减法 0-FFFFFFFFH,在补码加/减运算器中等价于 00000000H+00000000H+1=00000001H,进位输出 C=0,因此减法借位标志 CF=C=1。
(4)不能用shl指令实现power*2。因为power是float型变量,其机器数包含阶码部分,shl指令将整数所有有效数位左移,但不能正确处理浮点数的阶码,因此无法实现乘2功能。