/* 通过FPU运算完成 64 位整数加法运算 */
#include
struct dlong { unsigned long low; unsigned long hi; };
struct dlong * fputest (struct dlong * a, long b) { struct dlong _a = *a;
asm { FINIT /* 初始化 FPU */ FILD _a /* 装入长整数 */ FIADD b /* 进行整数加法运算 */ FISTP _a /* 计算结果出栈 */ }
*a = _a; return (a); }
int main (void) { struct dlong dla;
printf ("Hello\n");
dla.hi = 1; dla.low = 2; printf ("%08lx %08lx\n", dla.hi, dla.low); fputest (&dla, -8); printf ("%08lx %08lx\n", dla.hi, dla.low);
getchar (); return (0); }
运行结果: Hello 00000001 00000002 00000000 fffffffa
|