code: 9ferno

ref: 6bb619c8db2867ddd9cd19c0aec05065f5ee0cae
dir: /libmp/Inferno-386/mpdigdiv.s/

View raw version
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