Annotation of 3BSD/libc/gen/atofo.s, revision 1.1.1.1

1.1       root        1:        # optimized (and corrected) from output of C compiler
                      2:        #       -16(fp) --> r0
                      3:        #       -20(fp) --> r8
                      4:        #       -8(fp) --> r6
                      5:        #       -21(fp) --> r5
                      6:        #       -22(fp) --> r4
                      7:        .set    one,010                         # 1.0 in floating immediate format
                      8:        .set    ten,042                         # 10.0 in floating immediate format
                      9: big:   .word   0x5c80,0,0,0            # 2**56 in double floating
                     10: huge:  .word   0x8000,0,0,0            # reserved operand
                     11: L49:   .double 0d1.00000000000000000000e+21
                     12:        .set    .R1,0xff0
                     13:        .set    .F1,24
                     14:        .globl  _atof
                     15: _atof:
                     16:        .word   .R1
                     17:        movl    4(ap),r11
                     18: L15:
                     19:        cvtbl   (r11)+,r10
                     20:        cmpl    r10,$32
                     21:        jeql    L15
                     22:        clrb    r5
                     23:        cmpb    r10,$45
                     24:        jneq    L17
                     25:        incb    r5
                     26:        jbr     L18
                     27: L17:
                     28:        cmpb    r10,$43
                     29:        jeql    L18
                     30:        decl    r11
                     31: L18:
                     32:        clrd    r0
                     33:        clrl    r9
                     34:        jbr     L22
                     35: L20001:
                     36:        muld2   $ten,r0
                     37:        subl3   $48,r10,r6
                     38:        cvtld   r6,r6
                     39:        addd2   r6,r0
                     40:        jbr     L22
                     41: L20003:
                     42:        cmpb    r10,$48
                     43:        jlss    L23
                     44:        cmpd    r0,big
                     45:        jlss    L20001
                     46:        incl    r9
                     47: L22:
                     48:        cvtbl   (r11)+,r10
                     49:        cmpl    r10,$57
                     50:        jleq    L20003
                     51: L23:
                     52:        cmpb    r10,$46
                     53:        jeql    L28
                     54:        jbr     L27
                     55: L20005:
                     56:        cmpb    r10,$48
                     57:        jlss    L27
                     58:        cmpd    r0,big
                     59:        jgeq    L28
                     60:        decl    r9
                     61:        muld2   $ten,r0
                     62:        subl3   $48,r10,r6
                     63:        cvtld   r6,r6
                     64:        addd2   r6,r0
                     65: L28:
                     66:        cvtbl   (r11)+,r10
                     67:        cmpl    r10,$57
                     68:        jleq    L20005
                     69: L27:
                     70:        tstb    r5
                     71:        jeql    L8827
                     72:        mnegd   r0,r0
                     73: L8827:
                     74:        clrl    r8
                     75:        cmpb    r10,$69
                     76:        jeql    L10000
                     77:        cmpb    r10,$101
                     78:        jneq    L32
                     79: L10000:
                     80:        clrb    r4
                     81:        cvtbl   (r11)+,r10
                     82:        cmpl    r10,$45
                     83:        jneq    L33
                     84:        incb    r4
                     85:        jbr     L37
                     86: L33:
                     87:        cmpb    r10,$43
                     88:        jeql    L37
                     89:        decl    r11
                     90:        jbr     L37
                     91: L20007:
                     92:        cmpb    r10,$48
                     93:        jlss    L38
                     94:        moval   (r8)[r8],r8
                     95:        movaw   -48(r10)[r8],r8
                     96: L37:
                     97:        cvtbl   (r11)+,r10
                     98:        cmpl    r10,$57
                     99:        jleq    L20007
                    100: L38:
                    101:        tstb    r4
                    102:        jeql    L32
                    103:        mnegl   r8,r8
                    104: L32:
                    105:        addl2   r8,r9
                    106:        jneq    L40
                    107:        ret
                    108: L40:
                    109:        clrb    r4
                    110:        tstl    r9
                    111:        jgeq    L41
                    112:        incb    r4
                    113:        mnegl   r9,r9
                    114: L41:
                    115:        cmpl    r9,$38
                    116:        jleq    L42
                    117:        tstb    r4
                    118:        jeql    L43
                    119:        clrd    r0
                    120:        ret
                    121: L43:
                    122:        tstb    r5
                    123:        jeql    L8843
                    124:        mnegd   huge,r0
                    125:        ret
                    126: L8843:
                    127:        movd    huge,r0
                    128:        ret
                    129: L42:
                    130:        movd    $one,r6
                    131:        jbr     L46
                    132: L20009:
                    133:        divd2   r6,r0
                    134:        ret
                    135: L48:
                    136:        muld2   $ten,r6
                    137:        decl    r9
                    138: L46:
                    139:        tstl    r9
                    140:        jeql    L47
                    141:        cmpl    r9,$21
                    142:        jneq    L48
                    143:        muld2   L49,r6
                    144: L47:
                    145:        tstb    r4
                    146:        jneq    L20009
                    147:        muld2   r6,r0
                    148:        ret

unix.superglobalmegacorp.com

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