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

📄 memset.c

📁 Linux内核源代码 为压缩文件 是<<Linux内核>>一书中的源代码
💻 C
字号:
#include <linux/types.h>void * memset(void * s, int c, size_t count){  void *xs = s;  size_t temp, temp1;  if (!count)    return xs;  c &= 0xff;  c |= c << 8;  c |= c << 16;  if ((long) s & 1)    {      char *cs = s;      *cs++ = c;      s = cs;      count--;    }  if (count > 2 && (long) s & 2)    {      short *ss = s;      *ss++ = c;      s = ss;      count -= 2;    }  temp = count >> 2;  if (temp)    {      long *ls = s;      __asm__ __volatile__("movel %1,%2\n\t"			   "andw  #7,%2\n\t"			   "lsrl  #3,%1\n\t"			   "negw  %2\n\t"			   "jmp   %%pc@(2f,%2:w:2)\n\t"			   "1:\t"			   "movel %3,%0@+\n\t"			   "movel %3,%0@+\n\t"			   "movel %3,%0@+\n\t"			   "movel %3,%0@+\n\t"			   "movel %3,%0@+\n\t"			   "movel %3,%0@+\n\t"			   "movel %3,%0@+\n\t"			   "movel %3,%0@+\n\t"			   "2:\t"			   "dbra  %1,1b\n\t"			   "clrw  %1\n\t"			   "subql #1,%1\n\t"			   "jpl   1b\n\t"			   : "=a" (ls), "=d" (temp), "=&d" (temp1)			   : "d" (c), "0" (ls), "1" (temp)			   );      s = ls;    }  if (count & 2)    {      short *ss = s;      *ss++ = c;      s = ss;    }  if (count & 1)    {      char *cs = s;      *cs = c;    }  return xs;}

⌨️ 快捷键说明

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