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

📄 memcpy.s

📁 该文件是rt_linux
💻 S
字号:
/* Copyright 2002 Andi Kleen */	/* * memcpy - Copy a memory block. * * Input:	 * rdi destination * rsi source * rdx count *  * Output: * rax original destination */	 // #define FIX_ALIGNMENT 	.globl __memcpy	.globl memcpy	.p2align__memcpy:memcpy:			pushq %rbx	movq %rdi,%rax#ifdef FIX_ALIGNMENT	movl %edi,%ecx	andl $7,%ecx	jnz  bad_alignment	after_bad_alignment:#endif	movq %rdx,%rcx	movl $64,%ebx	shrq $6,%rcx	jz handle_tail	loop_64:	movq (%rsi),%r11	movq 8(%rsi),%r8	movq 2*8(%rsi),%r9	movq 3*8(%rsi),%r10	movq %r11,(%rdi)	movq %r8,1*8(%rdi)	movq %r9,2*8(%rdi)	movq %r10,3*8(%rdi)			movq 4*8(%rsi),%r11	movq 5*8(%rsi),%r8	movq 6*8(%rsi),%r9	movq 7*8(%rsi),%r10	movq %r11,4*8(%rdi)	movq %r8,5*8(%rdi)	movq %r9,6*8(%rdi)	movq %r10,7*8(%rdi)	addq %rbx,%rsi		addq %rbx,%rdi	decl %ecx	jnz  loop_64handle_tail:	movl %edx,%ecx	andl $63,%ecx	shrl $3,%ecx	jz   handle_7	movl $8,%ebxloop_8: 	movq (%rsi),%r8	movq %r8,(%rdi) 	addq %rbx,%rdi	addq %rbx,%rsi	decl %ecx	jnz  loop_8handle_7:	movl %edx,%ecx	andl $7,%ecx	jz endeloop_1:	movb (%rsi),%r8b	movb %r8b,(%rdi) 	incq %rdi	incq %rsi	decl %ecx	jnz loop_1	ende: 		sfence	popq %rbx	ret#ifdef FIX_ALIGNMENT	/* align destination */	/* This is simpleminded. For bigger blocks it may make sense to align	   src and dst to their aligned subset and handle the rest separately */bad_alignment:	movl $8,%r9d	subl %ecx,%r9d	movl %r9d,%ecx	subq %r9,%rdx	js   small_alignment	jz   small_alignmentalign_1:	movb (%rsi),%r8b	movb %r8b,(%rdi) 	incq %rdi	incq %rsi	decl %ecx	jnz  align_1	jmp after_bad_alignmentsmall_alignment:	addq %r9,%rdx	jmp handle_7#endif	

⌨️ 快捷键说明

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