用于嵌入式Linux系统的标准C的库函数

源代码在线查看: strlen.c

软件大小: 6528 K
上传用户: whyzhao
关键词: Linux 嵌入式 标准
下载地址: 免注册下载 普通下载 VIP

相关代码

				/*				 * strlen.c -- strlen function.  On at least some MIPS chips, a simple				 * strlen is faster than the 'optimized' C version.				 *				 * Copyright (c) 2001, 2002 Red Hat, Inc.				 *				 * The authors hereby grant permission to use, copy, modify, distribute,				 * and license this software and its documentation for any purpose, provided				 * that existing copyright notices are retained in all copies and that this				 * notice is included verbatim in any distributions. No written agreement,				 * license, or royalty fee is required for any of the authorized uses.				 * Modifications to this software may be copyrighted by their authors				 * and need not follow the licensing terms described here, provided that				 * the new terms are clearly indicated on the first page of each file where				 * they apply.				 */								#include 				#include 								/* MIPS16 needs to come first.  */								#if defined(__mips16)				size_t				strlen (const char *str)				{				  const char *start = str;								  while (*str++ != '\0')				    ;								  return str - start - 1;				}				#elif defined(__mips64)				__asm__(""			/* 64-bit MIPS targets */					"	.set	noreorder\n"					"	.set	nomacro\n"					"	.globl	strlen\n"					"	.ent	strlen\n"					"strlen:\n"					"	daddiu	$2,$4,1\n"					"\n"					"1:	lbu	$3,0($4)\n"					"	bnez	$3,1b\n"					"	daddiu	$4,$4,1\n"					"\n"					"	jr	$31\n"					"	dsubu	$2,$4,$2\n"					"	.end	strlen\n"					"	.set	macro\n"					"	.set	reorder\n");								#else				__asm__(""			/* 32-bit MIPS targets */					"	.set	noreorder\n"					"	.set	nomacro\n"					"	.globl	strlen\n"					"	.ent	strlen\n"					"strlen:\n"					"	addiu	$2,$4,1\n"					"\n"					"1:	lbu	$3,0($4)\n"					"	bnez	$3,1b\n"					"	addiu	$4,$4,1\n"					"\n"					"	jr	$31\n"					"	subu	$2,$4,$2\n"					"	.end	strlen\n"					"	.set	macro\n"					"	.set	reorder\n");				#endif							

相关资源