Improvements to float support in printf_fast
[fw/sdcc] / device / lib / _fsnormalize.c
1 #define SDCC_FLOAT_LIB
2 #include <float.h>
3
4 static void dummy(void) _naked
5 {
6         _asm
7         .globl  fs_normalize_a
8 fs_normalize_a:
9 #ifdef FLOAT_SHIFT_SPEEDUP
10         mov     r0, #4
11 00001$:
12         mov     a, r4
13         jnz     00003$
14         xch     a, r1
15         xch     a, r2
16         xch     a, r3
17         mov     r4, a
18         //mov   r4, ar3
19         //mov   r3, ar2
20         //mov   r2, ar1
21         //mov   r1, #0
22         mov     a, exp_a
23         add     a, #248
24         mov     exp_a, a
25         djnz    r0, 00001$
26         ret
27 #else
28         mov     a, r4
29 #endif
30 00003$:
31         mov     r0, #32
32 00005$:
33         jb      acc.7, 00006$
34         dec     exp_a
35         clr     c
36         mov     a, r1
37         rlc     a
38         mov     r1, a
39         mov     a, r2
40         rlc     a
41         mov     r2, a
42         mov     a, r3
43         rlc     a
44         mov     r3, a
45         mov     a, r4
46         rlc     a
47         mov     r4, a
48         djnz    r0, 00005$
49 00006$:
50         ret
51         _endasm;
52 }