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

📄 kreciptest.c

📁 小型游戏引擎
💻 C
字号:
#include <stdlib.h>#include <stdio.h>#include "sar.h"/*extern int _asm_krecipasm (int);*/int reciptable[2048], fpuasm;void init (void){  int i;  for(i=0;i<2048;i++) reciptable[i] = i;/* divscale30(2048L,i+2048);*/}static int krecipasm(int i1){  int retval;  __asm__ __volatile__ ("    call _asm_krecipasm           " : "=a" (retval) : "a" (i1)			: "cc", "ebx", "ecx", "memory");  return(retval);} // krecipasmstatic int ansi_c_krecip (int x){  float xf;  int z;  int not;  if (x & 0x80000000) /* If the highest bit is set... */    not = 0x0FFFFFFFF;  else    not = 0;    xf = (float)x;/* convert the int to a float */  /* Pretend the float is an int so we can extract bits */  x = *((int*)(&xf));  z = x;    x = x & 0x007FF000;/* Mask out: 11 << 13 */  x = x >> 10;       /* Divide x by 1024 */  /* X now contains: 13 high order bits of the mantissa, followed by two 0 bits */  /* Now we perform an elaborate extraction     of the exponent from the floating point     numer? WTF is the subtraction for? */  z = z - 0x03F800000;/* Subtract (127<<23) */  z = z >> 23;  /* z now contains the exponent divided by two?  */  x = shift_algebraic_right(reciptable[(x>>2)], z) ^ not;  return x;}static int mykrecipasm(int i1){  int retval;  retval = ansi_c_krecip(i1);  return retval;}int main (int argc, char** argv){  int u;  init();  printf("sizeof(long) = %u, sizeof(int) = %u\n",	 sizeof(long int), sizeof(int));   u = 0;  while(scanf("%d", &u) >= 1){        printf("Original: %d \tMine: %d\n", 	   krecipasm(u),mykrecipasm(u));    u = 0;  }    return 0;}

⌨️ 快捷键说明

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