Annotation of 43BSDTahoe/sys/tahoemath/Kfrexpf.s, revision 1.1

1.1     ! root        1: /*     Kfrexpf.s       1.3     86/01/05        */
        !             2: 
        !             3: #include "../tahoe/SYS.h"
        !             4: 
        !             5:        .text
        !             6: ENTRY(Kfrexpf, 0)
        !             7:        subl3   $60,fp,sp
        !             8:        clrl    -60(fp)         # j=0;
        !             9:        clrl    -56(fp)         # neg=0;
        !            10:        tstl    4(fp)           # if(x<0){
        !            11:        jgeq    1f
        !            12:        lnd     4(fp)
        !            13:        std     4(fp)           # x = -x;
        !            14:        movl    $1,-56(fp)      # neg=1;}
        !            15: 1:
        !            16:        cmpd2   4(fp),one       # if (x>1){
        !            17:        jleq    1f
        !            18: 2:
        !            19:        cmpd2   4(fp),one       # while(x>1){
        !            20:        jleq    3f
        !            21:        addl2   $1,-60(fp)      # j=j+1;
        !            22:        pushl   16(fp)          # hfs   
        !            23:        ldd     two
        !            24:        pushd
        !            25:        ldd     4(fp)
        !            26:        pushd
        !            27:        callf   $24,_Kdivd
        !            28:        ldd     r0
        !            29:        std     4(fp)           # x= x/2;
        !            30:        jbr     2b
        !            31: 1:
        !            32:        cmpd2   4(fp),half      # if(x<0.5){
        !            33:        jlss    2f
        !            34:        jbr     3f
        !            35: 0:
        !            36:        subl2   $1,-60(fp)      # j = j-1;
        !            37:        pushl   16(fp)          # hfs
        !            38:        ldd     4(fp)
        !            39:        pushd
        !            40:        ldd     two
        !            41:        pushd
        !            42:        callf   $24,_Kmuld
        !            43:        ldd     r0
        !            44:        std     4(fp)           # x = 2*x;
        !            45: 2:
        !            46:        cmpd2   4(fp),half      # while (x<0.5){
        !            47:        jlss    0b
        !            48: 3:
        !            49:        movl    -60(fp),*12(fp) # *i=j;
        !            50:        tstl    -56(fp)         # if (neg)
        !            51:        jeql    1f
        !            52:        lnd     4(fp)
        !            53:        std     4(fp)
        !            54: 1:
        !            55:        ldd     4(fp)
        !            56:        cvdf
        !            57:        stf     r0
        !            58:        ret
        !            59: 
        !            60:        .data
        !            61:        .align  2
        !            62: one:   .long   0x40800000, 0x00000000 # .double 1
        !            63: two:   .long   0x41000000, 0x00000000 # .double 2
        !            64: half:  .long   0x40000000, 0x00000000 # .double .5

unix.superglobalmegacorp.com

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