.global memcpy

.text
# memcpy, copy n bytes of memory from src to dest
#   arguments:
#       a0: dest address
#       a1: source address
#       a2: number of bytes to copy
#   temporaries used:
#       t0, t1
#   return:
#       a0: address of dest + n
#       a1: address of src + n
#
memcpy:
  li t0, 0
memcpy_loop:
  # TODO: copy in chunks of 4 bytes if n > 4
  beq t0, a2, memcpy_done
  lbu t1, 0(a1)
  sb  t1, 0(a0)
  addi a0, a0, 1
  addi a1, a1, 1
  addi t0, t0, 1
  j memcpy_loop
memcpy_done:
  ret