diff options
| author | John Wilbert M. Villamor <lameguy64@gmail.com> | 2019-06-23 07:42:16 +0800 |
|---|---|---|
| committer | John Wilbert M. Villamor <lameguy64@gmail.com> | 2019-06-23 07:42:16 +0800 |
| commit | 7be9178c0f9b0e698a305ecc5c0c41fcc596a4fc (patch) | |
| tree | e98c627e1da5c764563774b89b0c06d7ac5ad0a4 /libpsn00b/libc | |
| parent | ae9e545c3ed33d39ce21ae13ceb8337fa34901b8 (diff) | |
| download | psn00bsdk-7be9178c0f9b0e698a305ecc5c0c41fcc596a4fc.tar.gz | |
LibPSn00b officially v0.10b, added psxsio library, better DrawSync() and VSync(), better reference manual.
Diffstat (limited to 'libpsn00b/libc')
| -rw-r--r-- | libpsn00b/libc/malloc.s | 46 | ||||
| -rw-r--r-- | libpsn00b/libc/memcmp.s | 8 | ||||
| -rw-r--r-- | libpsn00b/libc/memcpy.s | 6 | ||||
| -rw-r--r-- | libpsn00b/libc/memmove.s | 8 | ||||
| -rw-r--r-- | libpsn00b/libc/memset.s | 4 | ||||
| -rw-r--r-- | libpsn00b/libc/start.s | 4 |
6 files changed, 41 insertions, 35 deletions
diff --git a/libpsn00b/libc/malloc.s b/libpsn00b/libc/malloc.s index 20e5371..fdb196d 100644 --- a/libpsn00b/libc/malloc.s +++ b/libpsn00b/libc/malloc.s @@ -52,7 +52,7 @@ malloc: lw $a2, 0($a2) sll $a0, 2 -.find_next: +.Lfind_next: move $a1, $a2 @@ -61,16 +61,16 @@ malloc: subu $v0, $a2, $a1 # Compute space between current and next - beqz $v1, .empty_block # Occupy empty block (if size = 0) + beqz $v1, .Lempty_block # Occupy empty block (if size = 0) nop - beqz $a2, .new_block # Allocate a new block (if no next) + beqz $a2, .Lnew_block # Allocate a new block (if no next) nop addiu $v0, -(ND_HSIZ*2) # Compute remaining space of block subu $v0, $v1 - blt $v0, $a0, .find_next # Search for the next block if space is not big enough + blt $v0, $a0, .Lfind_next # Search for the next block if space is not big enough nop # Perform a block split using remaining space of current block @@ -88,19 +88,19 @@ malloc: jr $ra addiu $v0, ND_HSIZ -.empty_block: # Occupy an empty block +.Lempty_block: # Occupy an empty block - beqz $a2, .no_next # Skip size calculation if there's no next + beqz $a2, .Lno_next # Skip size calculation if there's no next nop addiu $v0, -ND_HSIZ - blt $v0, $a0, .find_next + blt $v0, $a0, .Lfind_next nop - b .skip_space_check + b .Lskip_space_check nop -.no_next: +.Lno_next: la $v1, _malloc_addr # Check if there's enough space for a block lw $v1, 0($v1) @@ -111,16 +111,16 @@ malloc: addu $v1, $a0 addiu $v1, ND_HSIZ - bgt $v1, $v0, .no_space + bgt $v1, $v0, .Lno_space nop -.skip_space_check: +.Lskip_space_check: sw $a0, ND_SIZE($a1) jr $ra # Return address addiu $v0, $a1, ND_HSIZ -.new_block: # Create a new block +.Lnew_block: # Create a new block addu $a2, $a1, $v1 # Compute address for new block addiu $a2, ND_HSIZ @@ -134,7 +134,7 @@ malloc: addu $v1, $a0 addiu $v1, ND_HSIZ - bgt $v1, $v0, .no_space # Reject if it exceeds specified size + bgt $v1, $v0, .Lno_space # Reject if it exceeds specified size nop sw $a1, ND_PREV($a2) @@ -146,7 +146,8 @@ malloc: jr $ra # Return address addiu $v0, $a2, ND_HSIZ -.no_space: # Return a null if no space can be found +.Lno_space: # Return a null if no space can be found + jr $ra move $v0, $0 @@ -168,10 +169,12 @@ calloc: move $a0, $v0 mflo $a1 -.clear_loop: + +.Lclear_loop: + sw $0 , 0($a0) addi $a1, 4 - bgtz $a1, .clear_loop + bgtz $a1, .Lclear_loop addiu $a0, 4 lw $ra, 0($sp) @@ -191,10 +194,10 @@ free: lw $a1, ND_PREV($a0) lw $a2, ND_NEXT($a0) - beqz $a1, .is_start # Check if block is a starting block + beqz $a1, .Lis_start # Check if block is a starting block nop - beqz $a2, .is_end + beqz $a2, .Lis_end nop # Unlink @@ -203,10 +206,13 @@ free: jr $ra sw $a1, ND_PREV($a2) -.is_end: # Unlinks the ending block +.Lis_end: # Unlinks the ending block + jr $ra sw $0 , ND_NEXT($a1) -.is_start: # Simply set size to 0 if starting block + +.Lis_start: # Simply set size to 0 if starting block + jr $ra sw $0 , ND_SIZE($a0) diff --git a/libpsn00b/libc/memcmp.s b/libpsn00b/libc/memcmp.s index b8b495d..ec1e729 100644 --- a/libpsn00b/libc/memcmp.s +++ b/libpsn00b/libc/memcmp.s @@ -13,19 +13,19 @@ .global memcmp .type memcmp, @function memcmp: - blez $a2, .exit + blez $a2, .Lexit addi $a2, -1 lbu $v0, 0($a0) lbu $v1, 0($a1) addiu $a0, 1 - bne $v0, $v1, .mismatch + bne $v0, $v1, .Lmismatch addiu $a1, 1 b memcmp nop -.mismatch: +.Lmismatch: jr $ra sub $v0, $v1 -.exit: +.Lexit: jr $ra move $v0, $0
\ No newline at end of file diff --git a/libpsn00b/libc/memcpy.s b/libpsn00b/libc/memcpy.s index e1a4e30..e3d1dd5 100644 --- a/libpsn00b/libc/memcpy.s +++ b/libpsn00b/libc/memcpy.s @@ -14,15 +14,15 @@ .type memcpy, @function memcpy: move $v0, $a0 -.loop: +.Lloop: blez $a2, .exit addi $a2, -1 lbu $a3, 0($a1) addiu $a1, 1 sb $a3, 0($a0) - b .loop + b .Lloop addiu $a0, 1 -.exit: +.Lexit: jr $ra nop
\ No newline at end of file diff --git a/libpsn00b/libc/memmove.s b/libpsn00b/libc/memmove.s index 961e71f..d32e2ca 100644 --- a/libpsn00b/libc/memmove.s +++ b/libpsn00b/libc/memmove.s @@ -14,16 +14,16 @@ memmove: addu $a1, $a2 addiu $a0, -1 addiu $a1, -1 -.loop: - blez $a2, .exit +.Lloop: + blez $a2, .Lexit addi $a2, -1 lbu $v1, 0($a1) addiu $a1, -1 sb $v1, 0($a0) addiu $a0, -1 - b .loop + b .Lloop nop -.exit: +.Lexit: jr $ra nop
\ No newline at end of file diff --git a/libpsn00b/libc/memset.s b/libpsn00b/libc/memset.s index f7d86b1..b3a3af3 100644 --- a/libpsn00b/libc/memset.s +++ b/libpsn00b/libc/memset.s @@ -14,12 +14,12 @@ .type memset,@function memset: move $v0, $a0 - blez $a2, .exit + blez $a2, .Lexit addi $a2, -1 sb $a1, 0($a0) b memset addiu $a0, 1 -.exit: +.Lexit: jr $ra nop
\ No newline at end of file diff --git a/libpsn00b/libc/start.s b/libpsn00b/libc/start.s index d08a2c7..2cf6ed0 100644 --- a/libpsn00b/libc/start.s +++ b/libpsn00b/libc/start.s @@ -15,9 +15,9 @@ _start: la $a0, .bss # What are the CORRECT symbols for BSS start and end? la $a1, _end -.clear_bss: +.Lclear_bss: sb $0 , 0($a0) - blt $a0, $a1, .clear_bss + blt $a0, $a1, .Lclear_bss addiu $a0, 1 la $a0, _end+4 # Initialize heap for malloc (does not use BIOS maalloc) |
