📄 memset.s
字号:
/* * Written by J.T. Conklin <jtc@netbsd.org>. * Public domain. */#include <asm.h>#if defined(LIBC_SCCS) RCSID("$NetBSD: memset.S,v 1.8 1995/04/28 22:58:05 jtc Exp $")#endifENTRY(memset) pushl %edi pushl %ebx movl 12(%esp),%edi movzbl 16(%esp),%eax /* unsigned char, zero extend */ movl 20(%esp),%ecx pushl %edi /* push address of buffer */ cld /* set fill direction forward */ /* * if the string is too short, it's really not worth the overhead * of aligning to word boundries, etc. So we jump to a plain * unaligned set. */ cmpl $0x0f,%ecx jle L1 movb %al,%ah /* copy char to all bytes in word */ movl %eax,%edx sall $16,%eax orl %edx,%eax movl %edi,%edx /* compute misalignment */ negl %edx andl $3,%edx movl %ecx,%ebx subl %edx,%ebx movl %edx,%ecx /* set until word aligned */ rep stosb movl %ebx,%ecx shrl $2,%ecx /* set by words */ rep stosl movl %ebx,%ecx /* set remainder by bytes */ andl $3,%ecxL1: rep stosb popl %eax /* pop address of buffer */ popl %ebx popl %edi ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -