stormy16-lib2.c

来自「gcc3.2.1源代码」· C语言 代码 · 共 143 行

C
143
字号
typedef		 int HItype		__attribute__ ((mode (HI)));typedef		 int SItype		__attribute__ ((mode (SI)));typedef unsigned int USItype		__attribute__ ((mode (SI)));typedef int word_type			__attribute__ ((mode (__word__)));USItypeudivmodsi4(USItype num, USItype den, word_type modwanted){  USItype bit = 1;  USItype res = 0;  while (den < num && bit && !(den & (1L<<31)))    {      den <<=1;      bit <<=1;    }  while (bit)    {      if (num >= den)	{	  num -= den;	  res |= bit;	}      bit >>=1;      den >>=1;    }  if (modwanted) return num;  return res;}SItype__divsi3 (SItype a, SItype b){  word_type neg = 0;  SItype res;  if (a < 0)    {      a = -a;      neg = !neg;    }  if (b < 0)    {      b = -b;      neg = !neg;    }  res = udivmodsi4 (a, b, 0);  if (neg)    res = -res;  return res;}SItype__modsi3 (SItype a, SItype b){  word_type neg = 0;  SItype res;  if (a < 0)    {      a = -a;      neg = 1;    }  if (b < 0)    b = -b;  res = udivmodsi4 (a, b, 1);  if (neg)    res = -res;  return res;}SItype__udivsi3 (SItype a, SItype b){  return udivmodsi4 (a, b, 0);}SItype__umodsi3 (SItype a, SItype b){  return udivmodsi4 (a, b, 1);}SItype__ashlsi3 (SItype a, SItype b){  word_type i;    if (b & 16)    a <<= 16;  if (b & 8)    a <<= 8;  for (i = (b & 0x7); i > 0; --i)    a <<= 1;  return a;}SItype__ashrsi3 (SItype a, SItype b){  word_type i;    if (b & 16)    a >>= 16;  if (b & 8)    a >>= 8;  for (i = (b & 0x7); i > 0; --i)    a >>= 1;  return a;}USItype__lshrsi3 (USItype a, USItype b){  word_type i;    if (b & 16)    a >>= 16;  if (b & 8)    a >>= 8;  for (i = (b & 0x7); i > 0; --i)    a >>= 1;  return a;}

⌨️ 快捷键说明

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