Annotation of coherent/b/lib/libc/crt/i386/idcvt.s, revision 1.1

1.1     ! root        1: //////////
        !             2: / libc/crt/i386/idcvt.s
        !             3: / i386 C runtime library.
        !             4: / IEEE software floating point support.
        !             5: //////////
        !             6: 
        !             7: //////////
        !             8: / int _idcvt()
        !             9: /
        !            10: / Convert double in %edx:%eax to int, return in %eax.
        !            11: //////////
        !            12: 
        !            13: MAXINT .equ    0x7FFFFFFF
        !            14: SGNMASK        .equ    0x80000000
        !            15: 
        !            16:        .globl  _idcvt
        !            17:        .globl  _udcvt
        !            18: 
        !            19: _idcvt:
        !            20:        orl     %edx, %edx              / check arg sign
        !            21:        pushfl                          / and save
        !            22:        jns     ?posarg
        !            23:        xorl    %edx, $SGNMASK          / force arg positive
        !            24: ?posarg:
        !            25:        call    _udcvt                  / convert to unsigned
        !            26:        orl     %eax, %eax              / check high result bit
        !            27:        js      ?overflow               / too big to represent as int
        !            28:        popfl                           / restore arg sign
        !            29:        jns     ?done
        !            30:        negl    %eax                    / negative arg, complement result
        !            31: ?done:
        !            32:        ret
        !            33: 
        !            34: ?overflow:
        !            35:        movl    %eax, $MAXINT
        !            36:        popfl                           / restore arg sign
        !            37:        jns     ?done
        !            38:        incl    %eax                    / MAXINT+1 is MININT
        !            39:        ret
        !            40: 
        !            41: / end of libc/crt/i386/idcvt.s

unix.superglobalmegacorp.com

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