27 lines
510 B
ArmAsm
27 lines
510 B
ArmAsm
.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
|