123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- t = 97
- u = 98
- v = 99
- Q = 131
- link = 64
- /*
- * takes R(t)||Q ÷ R(u)
- *
- * returns quo in Q
- * returns rem in R(t)
- */
- TEXT _divul_(SB), $-4
- DSTEP0L R(t), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPL R(u), R(t)
- DSTEPLL R(u), R(t)
- DSTEPRL R(u), R(t)
- JMP (R(v))
- /*
- * takes Q||f2 ÷ f1
- *
- * returns rem in Q
- * returns quo in t
- */
- TEXT _divul(SB),$-4
- MFSR R(Q), R(t) /* pick up high num in R(t) */
- ORL $0, R0, R(u) /* put low num in Q */
- MTSR R(u), R(Q)
- MOVL $0, R(u)
- ORL R0, R(u), R(u) /* put den in R(u) */
- CALL R(v), _divul_(SB)
- MFSR R(Q), R0
- MTSR R(t), R(Q)
- JMP (R(link))
- /*
- * takes Q||f2 ÷ f1
- *
- * returns rem in Q
- * returns quo in t
- */
- TEXT _divl(SB),$-4
- MFSR R(Q), R(t) /* pick up high num R(t) */
- JMPT R(t), nnum
- ORL $0, R0, R(u) /* put low num in Q */
- MTSR R(u), R(Q)
- MOVL $0, R(u)
- ORL R0, R(u), R(u) /* put den in R(u) */
- JMPT R(u), pnumnden
- CALL R(v), _divul_(SB)
- MFSR R(Q), R0
- MTSR R(t), R(Q)
- JMP (R(link))
- pnumnden: /* botch returns pos rem */
- ISUBL $0, R(u)
- CALL R(v), _divul_(SB)
- MFSR R(Q), R(u)
- MTSR R(t), R(Q)
- ISUBL $0, R(u), R0 /* return neg quo */
- JMP (R(link))
- /*
- * numerator is negative.
- * do 64-bit negate.
- */
- nnum:
- CPEQL $0, R0, R(u) /* is low num 0? */
- JMPT R(u), nnul1
- ISUBL $0, R0, R(u) /* negate R(t)||R0 -> R(t)||R(u) */
- XNORL $0, R(t)
- JMP nnul2
- nnul1:
- MOVL $0, R(u) /* negate R(t)||0 -> R(t)||R(u) */
- ISUBL $0, R(t)
- nnul2:
- MTSR R(u), R(Q)
- MOVL $0, R(u)
- ORL R0, R(u), R(u) /* put den in R(u) */
- JMPT R(u), nnumnden
- CALL R(v), _divul_(SB)
- MFSR R(Q), R(u)
- MTSR R(t), R(Q)
- ISUBL $0, R(u), R0 /* return neg quo */
- JMP (R(link))
- nnumnden: /* botch returns pos rem */
- ISUBL $0, R(u)
- CALL R(v), _divul_(SB)
- MFSR R(Q), R0
- MTSR R(t), R(Q)
- JMP (R(link))
|