update things
This commit is contained in:
parent
d1ac414c5e
commit
eac07282a6
5 changed files with 83 additions and 20 deletions
104
runtime/libc.s
104
runtime/libc.s
|
|
@ -1,26 +1,13 @@
|
|||
section CODE
|
||||
public _memset
|
||||
|
||||
;;
|
||||
;; string.h
|
||||
;;
|
||||
|
||||
; memset:
|
||||
; 4(sp): dst
|
||||
; 8(sp): value
|
||||
; 12(sp): int
|
||||
_memset:
|
||||
move.l 4(sp),a0
|
||||
move.l 8(sp),d0
|
||||
move.l 12(sp),d1
|
||||
.loop:
|
||||
cmpi #0,d1
|
||||
beq.s .done
|
||||
move.b d0,(a0)+
|
||||
sub #1,d1
|
||||
bra.s .loop
|
||||
.done:
|
||||
rts
|
||||
public _memcpy
|
||||
public _memset
|
||||
public _strcat
|
||||
public _strcpy
|
||||
public _strlen
|
||||
|
||||
; memcpy:
|
||||
; 4(sp): dst
|
||||
|
|
@ -29,21 +16,92 @@ _memset:
|
|||
_memcpy:
|
||||
move.l 4(sp),a0
|
||||
move.l 8(sp),a1
|
||||
move.l 12(sp),d1
|
||||
move.l 12(sp),d0
|
||||
.loop:
|
||||
cmpi #0,d1
|
||||
cmpi.l #0,d0
|
||||
beq.s .done
|
||||
move.b (a1)+,(a0)+
|
||||
sub #1,d1
|
||||
sub.l #1,d0
|
||||
bra.s .loop
|
||||
.done:
|
||||
move.l 4(sp),d0
|
||||
rts
|
||||
|
||||
; memset:
|
||||
; 4(sp): dst
|
||||
; 8(sp): value
|
||||
; 12(sp): int
|
||||
_memset:
|
||||
move.l 4(sp),a0
|
||||
move.l 8(sp),d0
|
||||
move.l 12(sp),d0
|
||||
.loop:
|
||||
cmpi.l #0,d0
|
||||
beq.s .done
|
||||
move.b d0,(a0)+
|
||||
sub.l #1,d0
|
||||
bra.s .loop
|
||||
.done:
|
||||
move.l 4(sp),d0
|
||||
rts
|
||||
|
||||
; strcat:
|
||||
; 4(sp): dst
|
||||
; 8(sp): src
|
||||
_strcat:
|
||||
move.l 4(sp),a0
|
||||
move.l 8(sp),a1
|
||||
.loop_incr:
|
||||
move.b (a0),d0
|
||||
cmpi.b #0,d0
|
||||
beq.s .loop_copy
|
||||
add.l #1,a0
|
||||
bra.s .loop_incr
|
||||
.loop_copy:
|
||||
move.b (a1),d0
|
||||
cmpi.b #0,d0
|
||||
beq.s .done
|
||||
move.b (a1)+,(a0)+
|
||||
bra.s .loop_copy
|
||||
.done:
|
||||
move.b #0,(a0)
|
||||
move.l 4(sp),d0
|
||||
rts
|
||||
|
||||
; strcpy:
|
||||
; 4(sp): dst
|
||||
; 8(sp): src
|
||||
_strcpy:
|
||||
move.l 4(sp),a0
|
||||
move.l 8(sp),a1
|
||||
.loop:
|
||||
move.b (a1),d0
|
||||
cmpi.b #0,d0
|
||||
beq.s .done
|
||||
move.b (a1)+,(a0)+
|
||||
bra.s .loop
|
||||
.done:
|
||||
move.b #0,(a0)
|
||||
move.l 4(sp),d0
|
||||
rts
|
||||
|
||||
; strlen:
|
||||
; 4(sp): src
|
||||
_strlen:
|
||||
move.l 4(sp),a0
|
||||
move.l #0,d0
|
||||
.loop:
|
||||
move.b (a0)+,d1
|
||||
cmpi.b #0,d1
|
||||
beq.s .done
|
||||
add.l #1,d0
|
||||
bra.s .loop
|
||||
.done:
|
||||
rts
|
||||
|
||||
|
||||
;;
|
||||
;; 32-bit div/mod: taken from vc.lib
|
||||
;;
|
||||
|
||||
public __divu
|
||||
public __divs
|
||||
public __modu
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue