memset.s

来自「Linux内核源代码 为压缩文件 是<<Linux内核>&gt」· S 代码 · 共 58 行

S
58
字号
/* $Id: memset.S,v 1.1 1999/09/18 16:57:09 gniibe Exp $ * * "memset" implementation of SuperH * * Copyright (C) 1999  Niibe Yutaka * *//* *            void *memset(void *s, int c, size_t n); */#include <linux/linkage.h>ENTRY(memset)	tst	r6,r6	bt/s	5f		! if n=0, do nothing	 add	r6,r4	mov	#12,r0	cmp/gt	r6,r0	bt/s	4f		! if it's too small, set a byte at once	 mov	r4,r0	and	#3,r0	cmp/eq	#0,r0	bt/s	2f		! It's aligned	 sub	r0,r61:	dt	r0	bf/s	1b	 mov.b	r5,@-r42:				! make VVVV	swap.b	r5,r0		!   V0	or	r0,r5		!   VV	swap.w	r5,r0		! VV00	or	r0,r5		! VVVV	!	mov	r6,r0	shlr2	r0	shlr	r0		! r0 = r6 >> 33:	dt	r0	mov.l	r5,@-r4		! set 8-byte at once	bf/s	3b	 mov.l	r5,@-r4	!	mov	#7,r0	and	r0,r6	tst	r6,r6	bt	5f	! fill bytes4:	dt	r6	bf/s	4b	 mov.b	r5,@-r45:	rts	 mov	r4,r0

⌨️ 快捷键说明

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