vextoly/cryn

[# 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