⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpvecdigmuladd.s

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 S
字号:
/* *	mpvecdigmul(mpdigit *b, int n, mpdigit m, mpdigit *p) * *	p += b*m * *	each step look like: *		hi,lo = m*b[i] *		lo += oldhi + carry *		hi += carry *		p[i] += lo *		oldhi = hi * *	the registers are: *		hi = DX		- constrained by hardware *		lo = AX		- constrained by hardware *		b+n = SI	- can't be BP *		p+n = DI	- can't be BP *		i-n = BP *		m = BX *		oldhi = CX *		 */TEXT	mpvecdigmuladd(SB),$0	MOVL	b+0(FP),SI	MOVL	n+4(FP),CX	MOVL	m+8(FP),BX	MOVL	p+12(FP),DI	MOVL	CX,BP	NEGL	BP		/* BP = -n */	SHLL	$2,CX	ADDL	CX,SI		/* SI = b + n */	ADDL	CX,DI		/* DI = p + n */	XORL	CX,CX_muladdloop:	MOVL	(SI)(BP*4),AX	/* lo = b[i] */	MULL	BX		/* hi, lo = b[i] * m */	ADDL	CX,AX		/* lo += oldhi */	JCC	_muladdnocarry1	INCL	DX		/* hi += carry */_muladdnocarry1:	ADDL	AX,(DI)(BP*4)	/* p[i] += lo */	JCC	_muladdnocarry2	INCL	DX		/* hi += carry */_muladdnocarry2:	MOVL	DX,CX		/* oldhi = hi */	INCL	BP		/* i++ */	JNZ	_muladdloop	XORL	AX,AX	ADDL	CX,(DI)(BP*4)	/* p[n] + oldhi */	ADCL	AX,AX		/* return carry out of p[n] */	RET

⌨️ 快捷键说明

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