Annotation of coherent/b/lib/libc/crt/i8086/ldexp.s, revision 1.1.1.1

1.1       root        1: ////////
                      2: /
                      3: / Intel 8086 C runtime.
                      4: / Build a double from its mantissa and exponent parts.
                      5: / SMALL model.
                      6: /
                      7: ////////
                      8: 
                      9:        .globl  _fpac_
                     10:        .globl  ldexp_
                     11:        .globl  dzero
                     12: 
                     13: ////////
                     14: /
                     15: / double ldexp(dd, exp) double dd; int exp;
                     16: / returns dd * 2**exp
                     17: /
                     18: ////////
                     19: 
                     20: ldexp_:
                     21:        push    si
                     22:        push    di
                     23:        push    bp
                     24:        mov     bp, sp
                     25: 
                     26:        mov     ax, 14(bp)      / most significant word
                     27:        rol     ax, $1          / get exp isolated in register
                     28:        orb     ah, ah          / is exp 0?
                     29:        jnz     L0              / no
                     30:        call    dzero           / dd is 0, zero _fpac_
                     31:        jmp     L1              / and return it
                     32: L0:
                     33:        addb    ah, 16(bp)      / add exp
                     34:        ror     ax, $1          / back in place
                     35: 
                     36:        mov     _fpac_+6, ax
                     37:        mov     ax, 12(bp)
                     38:        mov     _fpac_+4, ax
                     39:        mov     ax, 10(bp)
                     40:        mov     _fpac_+2, ax
                     41:        mov     ax, 8(bp)
                     42:        mov     _fpac_, ax
                     43: L1:
                     44:        pop     bp
                     45:        pop     di
                     46:        pop     si
                     47:        ret

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.