Annotation of coherent/b/lib/libc/crt/i8086/ldexp.s, revision 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.