|
|
1.1 ! root 1: /* ! 2: * @(#)urem.s 7.1 (Berkeley) 5/21/88 ! 3: */ ! 4: ! 5: /* ! 6: * Unsigned remainder. ! 7: * ! 8: * urem(dividend, divisor) ! 9: */ ! 10: #include "../tahoe/SYS.h" ! 11: ! 12: ASENTRY(urem, 0) ! 13: bitl $0x80000000,8(fp) # if (divisor & 0x80000000){ ! 14: jeql 1f ! 15: movl 4(fp),r0 ! 16: cmpl 8(fp),r0 # if (divisor <= dividend ) ! 17: jgtru 2f ! 18: subl2 8(fp),r0 # return(dividend-divisor); ! 19: 2: # else return(dividend);} ! 20: ret ! 21: 1: ! 22: clrl r2 # return(dividend%divisor); ! 23: movl 4(fp),r3 ! 24: ediv 8(fp),r2,r1,r0 ! 25: ret ! 26: ! 27: /* ! 28: * aurem(dividendp, divisor) -- like urem but uses address of dividend. ! 29: * Implements %= avoiding side effects in the dividend expression. ! 30: */ ! 31: ASENTRY(aurem, 0) ! 32: bitl $0x80000000,8(fp) # if (divisor & 0x80000000){ ! 33: jeql 1f ! 34: movl *4(fp),r0 ! 35: cmpl 8(fp),r0 # if (divisor <= dividend ) ! 36: jgtru 2f ! 37: subl2 8(fp),r0 # return(dividend-divisor); ! 38: # else return(dividend);} ! 39: jbr 2f ! 40: 1: ! 41: clrl r2 # return(dividend%divisor); ! 42: movl *4(fp),r3 ! 43: ediv 8(fp),r2,r1,r0 ! 44: 2: ! 45: movl r0,*4(fp) ! 46: ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.