某程序中有如下循环代码段p“for(int i=0;i<N;i++)sum+=A[i];”。假设编译时变量sum,和i分别分配在寄存器R1和R2中。常量N在寄存器R6中,数组A的首地址在寄存器R3中。程序段P起始地址为0804 8100H,对应的汇编代码和

admin2015-12-30  17

问题 某程序中有如下循环代码段p“for(int i=0;i<N;i++)sum+=A;”。假设编译时变量sum,和i分别分配在寄存器R1和R2中。常量N在寄存器R6中,数组A的首地址在寄存器R3中。程序段P起始地址为0804 8100H,对应的汇编代码和机器代码如下表所示。

执行上述代码的计算机M采用32位定长指令字,其中分支指令bne采用如下格式:

OP为操作码:Rs和Rd为寄存器编号;OFFSET为偏移量,用补码表示。
假设对以上的计算机M和程序P的机器代码,M采用页式虚拟存储管理;P开始执行时,(R1)=(R2)=0,(R6)=1000,其机器代码己调入主存但不在Cache中;数组A未调入主存,且所有数组元素在同一页,并存储在磁盘同一个扇区。
请回答下列问题并说明理由。
P执行结束时,R2的内容是多少?

选项

答案R2里装的是i的值,循环条件是i<N(1000),即当i自增到不满足这个条件时跳出循环,程序结束,所以此时i的值为1000。

解析
转载请注明原文地址:https://kaotiyun.com/show/BbRi777K
0

最新回复(0)