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