综合题

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

问答题

(1)计算机M是RISC还是CISC?为什么?

【正确答案】

M为CISC。

M的指令长短不一,不符合RISC指令系统特点。

【答案解析】
问答题

(2)f1的机器指令代码共占多少字节?要求给出计算过程。

【正确答案】

f1的机器代码占96 B。

因为f1的第一条指令“push ebp”所在的虚拟地址为00401020H,最后一条指令“ret”所在的虚 拟地址为0040 107FH,所以,f1的机器指令代码长度为0040 107FH-0040 1020H+1=60H=96个字 节。

【答案解析】
问答题

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

【正确答案】

CF=1。

cmp指令实现i与n-1的比较功能,进行的是减法运算。在执行f1(0)过程中,n=0,当i=0时, i=0000 0000H,并且n-1=FFFF FFFFH。因此,当执行第20条指令时,在补码加/减运算器中执行 “0减FFFF FFFFH”的操作,即0000 0000H+00000000H+1=0000 0001H,此时,进位输出C=0,减 法运算时的借位标志CF=C 1=1。

【答案解析】
问答题

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

【正确答案】

f2中不能用sh1指令实现power*2。

因为sh1指令用来将一个整数的所有有效数位作为一个整体左移;而f2中的变量power是float 型,其机器数中不包含最高有效数位,但包含了阶码部分,将其作为一个整体左移时并不能实 现“乘2”的功能,因而f2中不能用sh1指令实现power*2。

【答案解析】