组成原理
2024-44
对于题 43 中的计算机 M,C 语言程序 P 包含的语句 “sum += a[i];” 在 M 中对应的指令序列 S 如下。
slli r4, r2, 2 //R[r4] ← R[r2] << 2
add r4, r3, r4 //R[r4] ← R[r3] + R[r4]
lw r5, 0(r4) //R[r5] ← M[R[r4] + 0]
add r1, r1, r5 //R[r1] ← R[r1] + R[r5]已知变量 i、sum 和数组 a 都为 int 型,通用寄存器 r1~r5 的编号为 01H~05H。
请回答下列问题。
(1) 根据指令序列 S 中每条指令的功能,写出存放数组 a 的首地址、变量 i 和 sum 的通用寄存器编号。(3 分)
(2) 已知 M 为小端方式计算机,采用页式存储管理方式,页大小为 4 KB。若执行到指令序列 S 中第 1 条指令时,i=5 且 r1 和 r3 的内容分别为 0000 1332H 和 0013 DFF0H,从地址 0013 DFF0H 开始的存储单元内容如题 44 图所示,则执行
“sum+=a[i];”语句后,a[i]的地址、a[i]和sum的机器数分别是什么(用十六进制表示)?a[i]所在页的页号是多少?此次执行中,数组a至少存放在几页中?(5分)

(3)指令“slli r4, r2, 2”的机器码是什么(用十六进制表示)?若数组a改为short类型,则指令序列S中slli指令的汇编形式应是什么?(2分)
答案
(1) 数组 a 的首地址存放在 r3;变量 i 存放在 r2;变量 sum 存放在 r1。
(2) a[i] 的地址为 0013E004H;a[i] 的机器数为 FFFFECDCH;sum 的机器数为 0000000EH;a[i] 所在页的页号是 0013EH;数组 a 至少存放在 2 页中。
(3) 指令机器码为 00212213H。汇编形式为 slli r4, r2, 1。