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

📄 strchr.s

📁 KPIT GNU Tools is a set of GNU development tools for Renesas microcontrollers.
💻 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 (strchr)       SOTYPE_FUNCTION(strchr)SYM (strchr):	pushl ebp	movl esp,ebp	pushl edi	pushl ebx	xorl ebx,ebx	movl 8(ebp),edi	movb 12(ebp),bl#ifndef __OPTIMIZE_SIZE__	/* check if string is aligned, if not do check one byte at a time */	test $3,edi	jne L9/* create 4 byte mask which is just the desired byte repeated 4 times */	movl ebx,ecx	sall $8,ebx	subl $4,edi	orl ecx,ebx	movl ebx,edx	sall $16,ebx	orl edx,ebx/* loop performing 4 byte mask checking for 0 byte or desired byte */	.p2align 4,,7L10:	addl $4,edi	movl (edi),ecx	leal -16843009(ecx),edx	movl ecx,eax	notl eax	andl eax,edx	testl $-2139062144,edx	jne L9	movl ebx,eax	xorl ecx,eax	leal -16843009(eax),edx	notl eax	andl eax,edx	testl $-2139062144,edx	je L10#endif /* not __OPTIMIZE_SIZE__ */		/* loop while (*s && *s++ != c) */L9:	leal -1(edi),eax	.p2align 4,,7L15:	incl eax	movb (eax),dl	testb dl,dl	je L14	cmpb bl,dl	jne L15	L14:/*  if (*s == c) return address otherwise return NULL */	cmpb bl,(eax)	je L19	xorl eax,eaxL19:	leal -8(ebp),esp	popl ebx	popl edi	leave	ret

⌨️ 快捷键说明

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