.text .p2align 2,0x90 .globl mpdigdiv .type mpdigdiv, @function mpdigdiv: /* Prelude */ pushl %ebp movl %ebx, -4(%esp) /* save on stack */ movl 8(%esp), %ebx movl (%ebx), %eax movl 4(%ebx), %edx movl 12(%esp), %ebx movl 16(%esp), %ebp xorl %ecx, %ecx cmpl %ebx, %edx /* dividend >= 2^32 * divisor */ jae divovfl cmpl %ecx, %ebx /* divisor == 1 */ je divovfl divl %ebx /* AX = DX:AX/BX */ movl %eax, (%ebp) jmp done /* return all 1's */ divovfl: notl %ecx movl %ecx, (%ebp) done: /* Postlude */ movl -4(%esp), %ebx /* restore from stack */ movl %esp, %ebp leave ret .endmpdigdiv: .size mpdigdiv,.endmpdigdiv-mpdigdiv