⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memcmp.s

📁 Newlib 嵌入式 C库 标准实现代码
💻 S
字号:
/* * ==================================================== * Copyright (C) 1998, 2002 by Red Hat Inc. All rights reserved. * * Permission to use, copy, modify, and distribute this * software is freely granted, provided that this notice * is preserved. * ==================================================== */	#include "i386mach.h"	.global SYM (memcmp)       SOTYPE_FUNCTION(memcmp)SYM (memcmp):	pushl ebp	movl esp,ebp	subl $16,esp	pushl ebx	pushl edi	pushl esi	movl 8(ebp),edi	movl 12(ebp),esi	movl 16(ebp),ecx	cld/* check if length is zero in which case just return 0 */	xorl eax,eax	testl ecx,ecx	jz L4#ifndef __OPTIMIZE_SIZE__/* if aligned on long boundary, compare doublewords at a time first */	movl edi,eax	orl esi,eax	testb $3,al	jne BYTECMP	movl ecx,ebx	shrl $2,ecx		/* calculate number of long words to compare */	repz	cmpsl	jz L5	subl $4,esi	subl $4,edi	movl $4,ecx	jmp BYTECMPL5:	andl $3,ebx		/* calculate number of remaining bytes */	movl ebx,ecx#endif /* not __OPTIMIZE_SIZE__ */BYTECMP: /* compare any unaligned bytes or remainder bytes */	repz	cmpsb/* set output to be < 0 if less than, 0 if equal, or > 0 if greater than */L3:	xorl edx,edx	movb -1(esi),dl	xorl eax,eax	movb -1(edi),al	subl edx,eaxL4:	leal -28(ebp),esp	popl esi	popl edi	popl ebx	leave	ret

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -