83 lines
1.6 KiB
ArmAsm
83 lines
1.6 KiB
ArmAsm
|
|
.file "mrmuldv.s"
|
|
.text
|
|
.globl muldiv
|
|
muldiv:
|
|
pushl %ebp
|
|
movl %esp,%ebp
|
|
pushl %ebx
|
|
|
|
|
|
movl 8(%ebp),%eax
|
|
mull 12(%ebp)
|
|
addl 16(%ebp),%eax
|
|
adcl $0,%edx
|
|
|
|
divl 20(%ebp)
|
|
movl 24(%ebp),%ebx
|
|
movl %edx,(%ebx)
|
|
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
|
|
.globl muldvm
|
|
muldvm:
|
|
pushl %ebp
|
|
movl %esp,%ebp
|
|
pushl %ebx
|
|
|
|
movl 8(%ebp),%edx
|
|
movl 12(%ebp),%eax
|
|
divl 16(%ebp)
|
|
|
|
movl 20(%ebp),%ebx
|
|
movl %edx,(%ebx)
|
|
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
|
|
.globl muldvd
|
|
muldvd:
|
|
pushl %ebp
|
|
movl %esp,%ebp
|
|
pushl %ebx
|
|
|
|
movl 8(%ebp),%eax
|
|
mull 12(%ebp)
|
|
addl 16(%ebp),%eax
|
|
adcl $0,%edx
|
|
movl 20(%ebp),%ebx
|
|
movl %eax,(%ebx)
|
|
movl %edx,%eax
|
|
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
|
|
.globl muldvd2
|
|
muldvd2:
|
|
pushl %ebp
|
|
movl %esp,%ebp
|
|
pushl %ebx
|
|
pushl %esi
|
|
|
|
movl 8(%ebp),%eax
|
|
mull 12(%ebp)
|
|
movl 16(%ebp),%ebx
|
|
addl (%ebx),%eax
|
|
adcl $0,%edx
|
|
movl 20(%ebp),%esi
|
|
addl (%esi),%eax
|
|
adcl $0,%edx
|
|
|
|
movl %eax,(%esi)
|
|
movl %edx,(%ebx)
|
|
|
|
popl %esi
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
|