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

📄 strlen.s

📁 Newlib 嵌入式 C库 标准实现代码
💻 S
字号:
! Entry: arg0: string start address! Exit:  result: length!! Copyright 2002 SuperH Ltd.#include "asm.h"ENTRY(strlen)#if __SHMEDIA__	ldlo.q r2,0,r3	ptabs/l r18,tr0	pta/l loop,tr1	andi r2,-8,r0	shlli r2,3,r1	mcmpeq.b r3,r63,r3	SHHI r3,r1,r4	beqi/u r4,0,tr1 // loop#ifdef __LITTLE_ENDIAN__	movi -1,r2	addi r3,-1,r4	msad.ubq r3,r4,r2#else	shlri r3,1,r3	nsb r3,r3	shlri r3,3,r2#endif	blink tr0,r63loop:	ldlo.q r0,8,r3	addi r0,8,r0	ldlo.q r0,8,r63	mcmpeq.b r3,r63,r3	beqi/l r3,0,tr1 // loop	sub r0,r2,r2#ifdef __LITTLE_ENDIAN__	addi r3,-1,r4	addi r2,-1,r2	msad.ubq r3,r4,r2#else	shlri r3,1,r3	nsb r3,r3	shlri r3,3,r3	add r2,r3,r2#endif	blink tr0,r63#else /* ! __SHMEDIA__, i.e. SH 1..4 / SHcompact */#ifdef __SH5__#define STR_INIT r2#define STR_ORIG r0#define STR_COPY STR_ORIG#define MASK r1#define TMP r3#define RESULT r2!        r0,r1,r3: clobbered#else#define STR_INIT r4#define STR_ORIG STR_INIT#define STR_COPY STR#define MASK r1#define TMP r3#define RESULT r0!        r1,r3: clobbered#endif#define STR RESULT	mov #3,MASK	and STR_INIT,MASK	tst MASK,MASK	SL(bf, L_char_loop, mov STR_INIT, STR_COPY)L_word_loop:	mov.l @STR+,TMP	cmp/str MASK,TMP	bf L_word_loop	add #-4,STRL_char_loop:	mov.b @STR+,TMP	tst TMP,TMP	bf L_char_loop	add #-1,STR	rts	sub STR_ORIG,STR#endif /* ! __SHMEDIA__ */

⌨️ 快捷键说明

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