31 lines
		
	
	
		
			569 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			569 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /*	memchr()					Author: Kees J. Bot */
 | |
| /*								2 Jan 1994 */
 | |
| 
 | |
| /* void *memchr(const void *s, int c, size_t n) */
 | |
| /*	Look for a character in a chunk of memory. */
 | |
| /* */
 | |
| .text
 | |
| .globl	_memchr
 | |
| .balign	16
 | |
| _memchr:
 | |
| 	push	%ebp
 | |
| 	movl	%esp, %ebp
 | |
| 	push	%edi
 | |
| 	movl	8(%ebp), %edi	/* edi = string */
 | |
| 	movb	12(%ebp), %al	/* The character to look for */
 | |
| 	movl	16(%ebp), %ecx	/* Length */
 | |
| 	cmpb	$1, %cl	/* 'Z' bit must be clear if ecx = 0 */
 | |
| 	cld
 | |
| 
 | |
| 	repne scasb
 | |
| 	jne	failure
 | |
| 	leal	-1(%edi), %eax	/* Found */
 | |
| 	pop	%edi
 | |
| 	pop	%ebp
 | |
| 	ret
 | |
| failure:
 | |
| 	xorl	%eax, %eax
 | |
| 	pop	%edi
 | |
| 	pop	%ebp
 | |
| 	ret
 | 
