对于题43中的计算机M,C语言程序Р包含的语句"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为小端方式,计算机采用页式存储管理方式。页大小为4KB。若执行到指令序列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指令的汇编形式应是什么?