LibC: Fix memchr and memcmp assembly implementations
These functions did not work with size 0 :D
This commit is contained in:
		
							parent
							
								
									ee078fc638
								
							
						
					
					
						commit
						15021b442c
					
				|  | @ -3,10 +3,11 @@ memchr: | ||||||
| 	xchgl 4(%esp), %edi | 	xchgl 4(%esp), %edi | ||||||
| 	movl  8(%esp), %eax | 	movl  8(%esp), %eax | ||||||
| 	movl 12(%esp), %ecx | 	movl 12(%esp), %ecx | ||||||
|  | 	movl $1, %edx | ||||||
|  | 	cmpl $1, %ecx # clear ZF if count is zero | ||||||
| 	repne scasb | 	repne scasb | ||||||
| 	xorl %eax, %eax | 	cmovel %edi, %edx | ||||||
| 	testl %ecx, %ecx | 	leal -1(%edx), %eax | ||||||
| 	cmovnzl %edi, %eax |  | ||||||
| 	movl 4(%esp), %edi | 	movl 4(%esp), %edi | ||||||
| 	ret | 	ret | ||||||
| 
 | 
 | ||||||
|  | @ -15,6 +16,7 @@ memcmp: | ||||||
| 	xchgl 4(%esp), %edi | 	xchgl 4(%esp), %edi | ||||||
| 	xchgl 8(%esp), %esi | 	xchgl 8(%esp), %esi | ||||||
| 	movl 12(%esp), %ecx | 	movl 12(%esp), %ecx | ||||||
|  | 	testl %ecx, %ecx # set ZF if count is zero | ||||||
| 	repe cmpsb | 	repe cmpsb | ||||||
| 	jne .memcmp_not_equal | 	jne .memcmp_not_equal | ||||||
| 	xorl %eax, %eax | 	xorl %eax, %eax | ||||||
|  |  | ||||||
|  | @ -2,15 +2,17 @@ | ||||||
| memchr: | memchr: | ||||||
| 	movb %sil, %al | 	movb %sil, %al | ||||||
| 	movq %rdx, %rcx | 	movq %rdx, %rcx | ||||||
|  | 	movq $1, %rdx | ||||||
|  | 	cmpq $1, %rcx # clear ZF if count is zero | ||||||
| 	repne scasb | 	repne scasb | ||||||
| 	xorq %rax, %rax | 	cmoveq %rdi, %rdx | ||||||
| 	testq %rcx, %rcx | 	leaq -1(%rdx), %rax | ||||||
| 	cmovnzq %rdi, %rax |  | ||||||
| 	ret | 	ret | ||||||
| 
 | 
 | ||||||
| .global memcmp
 | .global memcmp
 | ||||||
| memcmp: | memcmp: | ||||||
| 	movq %rdx, %rcx | 	movq %rdx, %rcx | ||||||
|  | 	testq %rcx, %rcx # set ZF if count is zero | ||||||
| 	repe cmpsb | 	repe cmpsb | ||||||
| 	jne .memcmp_not_equal | 	jne .memcmp_not_equal | ||||||
| 	xorq %rax, %rax | 	xorq %rax, %rax | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue