blob: 8ee4d67a3e7020a80bf8f9b2b4a85ba789ac5721 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
TEXT mpdigdiv(SB),$0
MOVL dividend+0(FP),BX
MOVL 0(BX),AX
MOVL 4(BX),DX
MOVL divisor+4(FP),BX
MOVL quotient+8(FP),BP
XORL CX,CX
CMPL DX,BX /* dividend >= 2^32 * divisor */
JHS _divovfl
CMPL BX,CX /* divisor == 0 */
JE _divovfl
DIVL BX /* AX = DX:AX/BX */
MOVL AX,0(BP)
RET
/* return all 1's */
_divovfl:
NOTL CX
MOVL CX,0(BP)
RET
|