minix/lib/i86/string/bcmp.s

29 lines
742 B
ArmAsm
Raw Normal View History

2005-04-21 16:53:53 +02:00
! bcmp() Author: Kees J. Bot
! 27 Jan 1994
.sect .text; .sect .rom; .sect .data; .sect .bss
! int bcmp(const void *s1, const void *s2, size_t n)
! Compare two chunks of memory.
! This is a BSD routine that escaped from the kernel. Don't use.
! (Alas it is not without some use, it reports the number of bytes
! after the bytes that are equal. So it can't be simply replaced.)
!
.sect .text
.define _bcmp
_bcmp:
push bp
mov bp, sp
push 8(bp)
push 6(bp)
push 4(bp)
call _memcmp ! Let memcmp do the work
mov sp, bp
test ax, ax
jz equal
sub dx, 4(bp) ! Memcmp was nice enough to leave "si" in dx
dec dx ! Number of bytes that are equal
mov ax, 8(bp)
sub ax, dx ! Number of bytes that are unequal
equal: pop bp
ret