2 * mpvecdigmulsub(mpdigit *b, int n, mpdigit m, mpdigit *p)
14 * hi = DX - constrained by hardware
15 * lo = AX - constrained by hardware
16 * b = SI - can't be BP
17 * p = DI - can't be BP
19 * n = CX - constrained by LOOP instr
26 .globl _mpvecdigmulsub
29 pushl %ebp /* save on stack */
34 leal 20(%esp), %ebp /* %ebp = FP for now */
35 movl 0(%ebp), %esi /* b */
36 movl 4(%ebp), %ecx /* n */
37 movl 8(%ebp), %ebx /* m */
38 movl 12(%ebp), %edi /* p */
42 movl (%esi, %ebp, 4),%eax /* lo = b[i] */
43 mull %ebx /* hi, lo = b[i] * m */
44 addl 0(%esp), %eax /* lo += oldhi */
46 incl %edx /* hi += carry */
48 subl %eax, (%edi, %ebp, 4)
50 incl %edx /* hi += carry */
56 subl %eax, (%edi, %ebp, 4)