[# addresses: walking a heap block backwards with the push-index idiom #]
make string "\n" nl
define newline result nothing
address nl
output text
set nothing
return
end
define main
make 3 of int64 block
move at
set 5
move 0
write
back
set 6
move 1
write
back
set 7
move 2
write
back
make int64 i
set 2
move i
write
set 0
home
mark walk
move i
read
compare 0
jump done when less
set 0
home
move i
read
push
move block
read
move at
pop
move index
read
output
call newline
move i
read
subtract 1
move i
write
set 0
home
jump walk
mark done
move block
read
free
return
end