File:  [DVB] / dietlibc / i386 / strcmp.S
Revision 1.7: download - view: text, annotated - select for diffs
Mon Oct 29 15:09:33 2001 UTC (22 years, 7 months ago) by olaf
Branches: MAIN
CVS tags: finnland_test_200301, branch_rc14_fieldtest_finnland, branch_rc13_fieldtest_finnland, branch_rc12_fieldtest_finnland, branch_rc10_fieldtest_finnland, RELEASE_finnland_200301_1, RC12_FIELDTEST_FINNLAND, RC10_FIELDTEST_FINNLAND, HEAD
fixed some function-types... (now the symbol-tables in the *.so are correct)

.text
.global strcmp
.type	strcmp,@function
.weak	strcoll
.type	strcoll,@function

#ifdef HIGH_PERFORMANCE
.align 	16
#endif

.Ldiff:
	movzbl	(%edx), %ecx
	subl	%ecx, %eax		# (unsigned char)*p - (unsigned char)*q, so wie die Original libc
	ret				# und ohne Überlaufprobleme: 
					# (int) ((signed char)c - (signed char)d) != (int)(signed char) ((unsigned char)c - (unsigned char)d)
					# c = 'ä', d = 'e': left expression: -129, right expression: 127

strcoll:
strcmp:
	movl 	4(%esp), %ecx
	movl 	8(%esp), %edx
	xorl	%eax, %eax
.Lloop:					# Schleifenanfang liegt genau auf Modulanfang + 0x10, damit alignbar
	movb 	(%ecx), %al
	cmpb	(%edx), %al
	jnz	.Ldiff
	incl 	%edx
	incl 	%ecx
	testb	%al, %al
	jnz	.Lloop
	ret

LinuxTV legacy CVS <linuxtv.org/cvs>