fprem.c

来自「The Valgrind distribution has multiple t」· C语言 代码 · 共 58 行

C
58
字号
/* Marginally test fprem/fprem1/fsincos; these are hard to check   otherwise since compilers hardly ever generate them. */#include <stdio.h>double do_fprem ( void ){  double res;  __asm__ __volatile__(    "ffree %%st(0)\n\t"    "ffree %%st(1)\n\t"    "fldpi\n\t"    "fldln2\n\t"    "fprem\n\t"    "fstpl 0(%0)"    : : "r"(&res)    );  return res;}double do_fprem1 ( void ){  double res;  __asm__ __volatile__(    "ffree %%st(0)\n\t"    "ffree %%st(1)\n\t"    "fldpi\n\t"    "fldln2\n\t"    "fprem1\n\t"    "fstpl 0(%0)"    : : "r"(&res)    );  return res;}double do_fsincos ( void ){  double res;  __asm__ __volatile__(    "fldln2\n\t"    "fsincos\n\t"    "fsub %%st(1)\n\t"    "fstpl 0(%0)"    : : "r"(&res)    );  return res;}int main ( void ){  __asm__ __volatile__("finit");  printf("fprem   %f\n", do_fprem());  printf("fprem1  %f\n", do_fprem1());  printf("fsincos %f\n", do_fsincos());  return 0;}

⌨️ 快捷键说明

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