From 46404513a49d1b3ef4203f4309bf3752eb0c3f35 Mon Sep 17 00:00:00 2001 From: Christian Kosman Date: Thu, 1 Oct 2020 21:06:18 -0700 Subject: Account for forward-looped memmove --- libpsn00b/libc/memmove.s | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/libpsn00b/libc/memmove.s b/libpsn00b/libc/memmove.s index d32e2ca..843ece7 100644 --- a/libpsn00b/libc/memmove.s +++ b/libpsn00b/libc/memmove.s @@ -10,20 +10,33 @@ .type memmove, @function memmove: move $v0, $a0 + sltu $v1, $a0, $a1 + blez $v1, .Linit_backward +.Lloop_forward: + blez $a2, .Lexit + addi $a2, -1 + lbu $v1, 0($a1) + addiu $a1, 1 + sb $v1, 0($a0) + addiu $a0, 1 + b .Lloop_forward + nop +.Linit_backward: addu $a0, $a2 addu $a1, $a2 addiu $a0, -1 addiu $a1, -1 -.Lloop: + b .Lloop_backward + nop +.Lloop_backward: blez $a2, .Lexit addi $a2, -1 lbu $v1, 0($a1) addiu $a1, -1 sb $v1, 0($a0) addiu $a0, -1 - b .Lloop + b .Lloop_backward nop .Lexit: jr $ra - nop - \ No newline at end of file + nop \ No newline at end of file -- cgit v1.2.3