某程序中有如下一段循环代码段 P: for (i = 0; i < N; i++) sum += A[ i ]; 假设编译时变量 sum 和 i 分别分配在寄存器 R1 和 R2 中,常量 N 在寄存器 R6 中,数组 A 的首地址在寄存器 R3 中,程序段 P 的起始地址为 08048100H,对应的汇编码和机器代码如下所示: 指令序号 指令地址 机器代码 汇编码 操作注释 1 08048100H 00022080H loop: sll R4, R2, 2 (R2)<<2→r4 1 2 3 4 5 6 32 08048104h 00083020h add r4, r3 (r4)+(r3)→r4 08048108h 8c850000h load r5, 0(r4) ((r4)+0)→r5 0804810ch 00250820h r1, r5 (r1)+(r5)→r1 08048110h 20420001h addi r2, (r2)+1→r2 08048114h 1446fffah bne r6, loop if (r2)≠(r6) goto 执行上述代码的计算机中,存储器 m 采用 位定长指令字,其中分支指令 采用如下格式: 31:26 25:21 20:16 15:0 op rs rd offset 指令格式中的 代表操作码字段, 和 都代表寄存器编号, 为偏移量常数(用补码表示), 请回答下列问题,并说明理由: (1)存储器 的编址单位是什么? (2)已知 sll 指令实现左移功能,数组 a 中每个元素占多少位? (3)上表中 指令的 字段的值是多少?已知 指令采用相对寻址方式, pc 的当前内容为指令bne 的地址,通过分析表中指令地址和 指令内容,推断>
A.2
B.3
C.4
D.5
某程序中有如下循环代码段P: for (i=0; i<n; 1 2 3 4 5 6 i++) sum+="A[i];" 假设编译时变量sum和i分别分配在寄存器r1和r2中。常量n在寄存器r6中,数组a的首地址在寄存器r3中,程序段p的起始地址为08048100h,对应汇编代码和机器代码如下表所示: 编号 地址 机器码 汇编码 操作注释 08048100h 00022080h loop: sll r4,r2,2 08048104h 00083020h add r4,r4,r3 (r4)+(r3)→r4 08048108h 8c850000h load r5,0(r4) ((r4)+0)→r5 0804810ch 00250820h r1,r1,r5 (r1)+(r5)→r1 08048110h 20420001h addi r2,r2,1 (r2)+1→r2 08048114h 1446fffah bne r2,r6,loop if (r2) ≠ (r6) goto loop 如果执行上述代码的计算机采用32位定长指令字,其中的分支指令bne格式如下: 31:26 25:21 20:16 15:0 op rs rd offset 其中的op为操作码,rs和rd为寄存器编号,offset为偏移量(用补码表示),请回答下列问题: 计算机的存储器编址单位是() a. 8位 b. 16位 c. 32位 d. 64位>
A、2
B、2.2
C、2.5
D、3
1. 在指令编码中,条件码占几位,最多有多少个条件,各个条件是如何形成的? 2. 在ARM指令中,什么是合法的立即数?判断下面各立即数是否合法,如果合法则写出在指令中的编码格式(也就是8位常数和4位移位数) 0x5430 0x108 0x304 0x501 0xfb10000 0x334000 0x3FC000 0x1FE0000 3. 块拷贝Load/Store指令在实现寄存器组合连续的内存单元中数据传递时,地址的变化方式有哪几种类型,并分析它们的地址变化情况。 4. 栈操作指令地址的变化方式有哪几种类型,并分析它们的地址变化情况,从而得出栈操作指令寻址和块拷贝Load/Store指令之间的对应关系。 5. 分析指令操作功能。 MOV R0,R1 MOV R1,,0X198 ADDEQS R1,R2,,0xAB CMP R2,#0Xab LDR R0,[R1,#4] STR R0,[R1,R1,LSL #2]! LDRH R0,[R1,#4] LDRSB R0,[R2,#-2]! STRB R1,[R2,#0Xa0] LDMIA R0,{R1,R2,R8} STMDB R0!,{R1-R5,R10,R11} STMED SP!{R0-R3,LR} 6. 如何实现两个64位数的加法操作,如何实现两个64位数的减法操作,如何求一个64位数的负数? 7. 分析下列每条语句的功能,并确定程序段所实现的操作。 CMP R0,,0 MOVEQ R1,,0 MOVGT R1,,1 8. 请使用多种方法实现将字数据0xFFFFFFFF送入寄存器R0 9. 写一条ARM指令,分别完成下列操作: (1)R0=16 (2)R0=R1/16 (3)R1=R2*3 (4)R0=-R0 10. 编写一个ARM汇编程序,累加一个队列中的所有元素,碰到0时停止。结果放入R4。
A.LOAD 1 1005
B.LOAD 1 550
C.LOAD 1 95
D.LOAD 1 455
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!