>
> 8バイト/4バイトの演算が思いつきません。
>
>
64bit / 16bit を基にして作ってみました
動作確認はしていません
Try on your own risk !
///// nkobayas@xxxxxxxxxx
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;
;
; (er1er0) / er2
; enter er1-er0 64bits divident (er1:MSB)
; er2 32bits divisor
; exit er1-er0 quatient
; er2 remainder
_longLongDivLong:
push.l er3
push.l er4
mov.b #64,r3 ;r3=bitCnt
xor.l er4,er4 ;remainder
;(er1er0)/er2
5: shll.l er0 ;LSB<<1
rotxl.l er1 ;MSB<<1 (bit32 --> Cy)
rotxl.l er4 ;Cy --> bit0 in er4
cmp.l er2,er4
blo 6f
sub.l er2,er4
bset #0,r0l
6: dec.w #1,r3
bne 5b
mov.l er4,er2 ;remainder
pop.l er4
pop.l er3
rts