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

📄 memcpy.c

📁 Newlib 嵌入式 C库 标准实现代码
💻 C
字号:
#if defined __thumb__#include "../../string/memcpy.c"#else#include <string.h>#include "xscale.h"void *memcpy (void *dst0, const void *src0, size_t len){  int dummy;  asm volatile (#ifndef __OPTIMIZE_SIZE__       "cmp	%2, #0x3\n\	bls	3f\n\	and	lr, %1, #0x3\n\	and	r3, %0, #0x3\n\	cmp	lr, r3\n\	bne	3f\n\	cmp	lr, #0x0\n\	beq	2f\n\	b	1f\n\0:\n\	ldrb	r3, [%1], #1\n\"	PRELOADSTR ("%1")"\n\	tst	%1, #0x3\n\	strb	r3, [%0], #1\n\	beq	3f\n\1:\n\	sub	%2, %2, #1\n\	cmn	%2, #1\n\	bne	0b\n\2:\n\	cmp	%2, #0xf\n\	bls	1f\n\0:\n\	ldmia	%1!, { r3, r4, r5, lr }\n\"	PRELOADSTR ("%1")"\n\\n\	sub	%2, %2, #16\n\	cmp	%2, #0xf\n\	stmia	%0!, { r3, r4, r5, lr }\n\	bhi	0b\n\1:\n\	cmp	%2, #0x7\n\	bls	1f\n\0:\n\	ldmia	%1!, { r3, r4 }\n\"	PRELOADSTR ("%1")"\n\\n\	sub	%2, %2, #8\n\	cmp	%2, #0x7\n\	stmia	%0!, { r3, r4 }\n\	bhi	0b\n\1:\n\	cmp	%2, #0x3\n\	bls	3f\n\0:\n\	sub	%2, %2, #4\n\	ldr	r3, [%1], #4\n\"	PRELOADSTR ("%1")"\n\\n\	cmp	%2, #0x3\n\	str	r3, [%0], #4\n\	bhi	0b\n\"#endif /* !__OPTIMIZE_SIZE__ */"\n\3:\n\"	PRELOADSTR ("%1")"\n\	sub	%2, %2, #1\n\	cmn	%2, #1\n\	beq	1f\n\0:\n\	sub	%2, %2, #1\n\	ldrb	r3, [%1], #1\n\"	PRELOADSTR ("%1")"\n\	cmn	%2, #1\n\	strb	r3, [%0], #1\n\	bne	0b\n\1:"       : "=&r" (dummy), "=&r" (src0), "=&r" (len)       : "0" (dst0), "1" (src0), "2" (len)       : "memory", "lr", "r3", "r4", "r5", "cc");  return dst0;}#endif

⌨️ 快捷键说明

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