Given the C code:
for (int i = 0; i < 3; ++i) {
// ...
}
write an equivalent for loop in assembly
.pos 0x1000
# <init>
ld $i, r0 # r0 = &i
ld (r0), r0 # r0 = i
ld $-3, r1 # r1 = 3
loop_start:
mov r0, r2 # r2 = i
add r1, r2 # r2 = i - 3 (allows us to use beq)
# evaluate condition
beq r1, end_loop # go to just after loop
# loop body
# increment and repeat
inc r0
br loop # go to start of loop
end_loop:
.pos 0x2000
i: .long 0