sewardj | 0c7a4f9 | 2005-03-25 20:29:00 +0000 | [diff] [blame] | 1 | |
2 | #include <stdio.h> | ||||
3 | #include <math.h> | ||||
4 | |||||
5 | double d; | ||||
6 | int i; | ||||
7 | |||||
8 | extern void do_tst ( void ); | ||||
9 | |||||
10 | asm( | ||||
11 | "\n" | ||||
12 | "do_tst:\n" | ||||
13 | "\txorl %eax,%eax\n" | ||||
14 | "\tfld d\n" | ||||
15 | "\tfxam\n" | ||||
16 | "\tfnstsw %ax\n" | ||||
17 | "\tffree %st(0)\n" | ||||
18 | "\tmovl %eax, i\n" | ||||
19 | "\tret\n" | ||||
20 | ); | ||||
21 | |||||
22 | int main ( void ) | ||||
23 | { | ||||
24 | d = -1.23; do_tst(); printf("%f -> 0x%x\n", d, i ); | ||||
25 | d = 0.0; do_tst(); printf("%f -> 0x%x\n", d, i ); | ||||
26 | d = 9.87; do_tst(); printf("%f -> 0x%x\n", d, i ); | ||||
27 | return 0; | ||||
28 | } |