|
|
1.1 ! root 1: ! 2: #include <machine/fp.h> ! 3: ! 4: .text ! 5: .globl Xcvtdl ! 6: _cvtdl: ! 7: .globl Xcvtdu ! 8: Xcvtdu: ! 9: Xcvtdl: .word 0x003c # we use r2,r3,r4,r5 ! 10: ! 11: # ! 12: #Some initializations: ! 13: # ! 14: clrl r3 # r3 - negative flag. ! 15: movl 4(fp),r0 # fetch operand. ! 16: movl 8(fp),r1 ! 17: # ! 18: #get exponent ! 19: # ! 20: andl3 $EXPMASK,r0,r2 # r2 will hold the exponent. ! 21: jeql is_reserved # check for reserved operand. ! 22: cmpl $ONE_EXP,r2 # if exponent is less then 1,return zero. ! 23: jgtr retzero ! 24: andl2 $0!EXPSIGN,r2 # turn off biased exponent sign ! 25: shrl $EXPSHIFT,r2,r2 ! 26: # ! 27: #get fraction ! 28: # ! 29: bbc $31,r0,positive # if negative remember it. ! 30: incl r3 ! 31: positive: ! 32: # clear the non fraction parts. ! 33: andl2 $(0!(EXPMASK | SIGNBIT)),r0 ! 34: # add the hidden bit. ! 35: orl2 $(0!CLEARHID),r0 ! 36: subl2 $24,r2 # compute the shift. ! 37: jgtr shift_left ! 38: mnegl r2,r2 ! 39: shrl r2,r0,r0 # shift right. ! 40: jmp shifted ! 41: shift_left: ! 42: cmpl r2,$7 ! 43: jgtr overflow ! 44: go_on: shlq r2,r0,r0 # shift right. ! 45: shifted: ! 46: bbc $0,r3,done # check for negative ! 47: mnegl r0,r0 ! 48: done: ! 49: ret ! 50: ! 51: retzero: ! 52: clrl r0 ! 53: ret ! 54: overflow: ! 55: callf $4,fpover ! 56: jmp go_on ! 57: ! 58: is_reserved: ! 59: bbc $31,r0,retzero ! 60: ! 61: callf $4,fpresop ! 62: ret ! 63:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.