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

📄 memset.s

📁 Newlib 嵌入式 C库 标准实现代码
💻 S
字号:
#include "setarch.h"#include "defines.h"#if defined (__H8300SX__)	.global	_memset_memset:	; Use er3 is a temporary since er0 must remain unchanged on exit.	mov.l	er0,er3	; Fill er1 with the byte to copy.	mov.b	r1l,r1h	mov.w	r1,e1	; Account for any excess bytes and words that will be copied after	; the main loop.  r2 >= 0 if there is a longword to copy.	sub	#4,LEN(r2)	blo	longs_done	; Copy one byte if doing so will make er3 word-aligned.	; This isn't needed for correctness but it makes the main loop	; slightly faster.	bld	#0,r3l	bcc	word_aligned	mov.b	r1l,@er3+	sub	#1,LEN(r2)	blo	longs_doneword_aligned:	; Likewise one word for longword alignment.	bld	#1,r3l	bcc	long_copy	mov.w	r1,@er3+	sub	#2,LEN(r2)	blo	longs_donelong_copy:	; Copy longwords.	mov.l	er1,@er3+	sub	#4,LEN(r2)	bhs	long_copylongs_done:	; At this point, we need to copy r2 & 3 bytes.  Copy a word	; if necessary.	bld	#1,r2l	bcc	words_done	mov.w	r1,@er3+words_done:	; Copy a byte.	bld	#0,r2l	bcc	bytes_done	mov.b	r1l,@er3+bytes_done:	rts#else; A0P pointer to cursor; A1P thing to copy	.global	_memset_memset:;	MOVP	@(2/4,r7),A2P	; dst;	MOVP	@(4/8,r7),A1	; src thing;	MOVP	@(6/12,r7),A3P	; len	MOVP	A2P,A2P	beq	quit	; A3 points to the end of the area	MOVP	A0P,A3P	ADDP	A2P,A3P	; see if we can do it in words	; by oring in the start of the buffer to the end address	or	A0L,A2L	btst	#0,A2L	bne	byteloop		; we can do it a word at a time	mov.b	A1L,A1H	wordloop:	mov.w	A1,@-A3P	CMPP	A3P,A0P	bne	wordloopquit:	rts	byteloop:	mov.b	A1L,@-A3P	CMPP	A3P,A0P	bne	byteloop	rts#endif

⌨️ 快捷键说明

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