mpdigdiv.s

来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· S 代码 · 共 42 行

S
42
字号
/* *  This only works on R[45]000 chips that allow 64 bit *  integer arithmetic even when uding 32 bit addresses * *	R1 = dividend* *	R2 = dividend[low] *	R3 = dividend[high] *	R4 = 32 bit divisor *	R5 = quotient* */TEXT	mpdigdiv(SB),$0	MOVW	0(R1),R2	MOVW	4(R1),R3	MOVW	divisor+4(FP),R4	MOVW	quotient+8(FP),R5	/* divisor == 0 */	BEQ	R4,_digovfl	/* dividend >= 2^32 * divisor */	SGTU	R4,R3,R7	BEQ	R7,_digovfl_digdiv1:	SLLV	$32,R2	SLLV	$32,R3	SRLV	$32,R2	ADDVU	R2,R3	SLLV	$32,R4	SRLV	$32,R4	DIVVU	R4,R3	MOVW	LO,R1	MOVW	R1,0(R5)	RET_digovfl:	MOVW	$-1,R1	MOVW	R1,0(R5)	RET

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?