5. The following code is executed by an ARM processor with each instruction exec
ID: 2248083 • Letter: 5
Question
5. The following code is executed by an ARM processor with each instruction executed exactly LDR r1,#10 MOV 12.#0 ADR. r3.c ADR r5, use ro fori, set to 0 get value ofN for loop termination test use r2 for f set to 0 oad r3 with address of base of c array load r5 with address of base or aray loop test loop CMPrOrl BGE loopend ifN exit loop loop body LDRr4.[r3 LDR r6.r5 MUL r4r4.16 ADD 1212r4 get value of get value ofs[] compute cli add intorunning sum f update loop counter ADD rOr0.#1 B loop add 1 to i nconditional branch to top ofloog Assume that the following code fragment was loaded at 0x0000 MOV r0, #0 0001 0010 0011 0100 0101 loop CMP ro, r1 0110 0111 1000 1001 1010 1011 1100 LDR r2, #10 MOV r2, #0 ADR r3, c ADR r5,x BGE loopend LDR r4, [r3, ro] LDR r6, [r5, ro] MULr4,r4,r6 ADD r2, r2, r4 ADD ro, ro, #1 B loop Show the contents of the instruction cache for a direct-mapped, two-line configuration, assuming each line holds one ARM instruction.Explanation / Answer
ARM Assembly code :
AREA MAX, CODE, READONLY
ENTRY
MOV r0,#0
LDR r1, =y
MOV r2,#0
ADR r3,c
ADR R5, x
;loop test
loop CMP r0,r1
BGE loop
LDR r4,[r3,r0]
LDR r6,[r5,r0]
MUL r9,r4,r6
ADD r2,r2,r4
ADD r0,r0,#1
B loop
x DCD &032,&012,&039,&010,&020,&035,&022,&031,&033,&034
c DCD &032,&012,&039,&010,&020,&035,&022,&031,&033,&034
AREA ANSWER, DATA, READWRITE
y DCD 0X0
END
Disassembled code
3: MOV r0,#0
0x00000000 E3A00000 MOV R0,#0x00000000
4: LDR r1, =y
0x00000004 E59F1078 LDR R1,[PC,#0x0078]
5: MOV r2,#0
0x00000008 E3A02000 MOV R2,#0x00000000
6: ADR r3,c
0x0000000C E28F3048 ADD R3,PC,#0x00000048
7: ADR R5, x
8: ;loop test
0x00000010 E28F501C ADD R5,PC,#0x0000001C
9: loop CMP r0,r1
0x00000014 E1500001 CMP R0,R1
10: BGE loop
0x00000018 AAFFFFFD BGE 0x00000014
11: LDR r4,[r3,r0]
0x0000001C E7934000 LDR R4,[R3,R0]
12: LDR r6,[r5,r0]
0x00000020 E7956000 LDR R6,[R5,R0]
13: MUL r9,r4,r6
0x00000024 E0090694 MUL R9,R4,R6
14: ADD r2,r2,r4
0x00000028 E0822004 ADD R2,R2,R4
15: ADD r0,r0,#1
0x0000002C E2800001 ADD R0,R0,#0x00000001
16: B loop
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.