I want to translate some Java code that calculates the sum from the below loop to ARM assembly, and I am wondering: how I can fix what I have so far?
Here is the Java code I am translating:
R0 = 0; R1 = 1; while (R1 < 100) { R0 += R1; R1++; }
And here is the code in ARM Assembly:
MOV R0,#0 MOV R1,#1 MOV R2,#100 looptop CMP R0, R2 BGT loopbottom ADD R0, R0, R1 ADD R1, R1, #1 B looptop loopbottom
Advertisement
Answer
You don’t have to initialize r2
since you can use the immediate value of 100 with cmp
:
mov r1, #1 mov r0, #0 1 cmp r1, #100 add r0, r0, r1 add r1, r1, #1 blt %b1
You can remove the cmp
instruction altogether by constructing the loop with decreasing, zero-terminating counter:
mov r1, #100 mov r0, #0 1 subs r1, r1, #1 addgt r0, r0, r1 bgt %b1