ack/mach/m68k2/libem/mlu.s

42 lines
550 B
ArmAsm
Raw Normal View History

1984-12-14 15:41:14 +00:00
.define .mlu
.sect .text
.sect .rom
.sect .data
.sect .bss
1984-12-14 15:41:14 +00:00
! entry : d0 multiplicand
! d1 multiplier
! exit : d0 high order result
! d1 low order result
.sect .text
1984-12-14 15:41:14 +00:00
.mlu:
move.l (sp)+,a1
move.l (sp)+,d1
move.l (sp)+,d0
movem.l d3/d4/d6,-(sp)
move.l d1,d3
move.l d1,d2
swap d2
move.l d2,d4
mulu d0,d1
mulu d0,d2
swap d0
mulu d0,d3
mulu d4,d0
clr.l d6
swap d1
add d2,d1
addx.l d6,d0
add d3,d1
addx.l d6,d0
swap d1
clr d2
clr d3
swap d2
swap d3
add.l d2,d0
add.l d3,d0
movem.l (sp)+,d3/d4/d6
jmp (a1)