1
0
mirror of https://github.com/cahirwpz/libnix.git synced 2025-12-08 14:58:56 +00:00
Files
amiga-libnix2/sources/nix13/math/__udivsi3.c
2014-01-05 20:02:29 +01:00

51 lines
818 B
C

asm(
" .globl ___umodsi3;"
" .globl ___udivsi3;"
" .globl ___udivsi4;"
/* D1.L = D0.L % D1.L unsigned */
"___umodsi3: moveml sp@(4:W),d0/d1;"
" jbsr ___udivsi4;"
" movel d1,d0;"
" rts;"
/* D0.L = D0.L / D1.L unsigned */
"___udivsi3: moveml sp@(4:W),d0/d1;"
"___udivsi4: movel d3,sp@-;"
" movel d2,sp@-;"
" movel d1,d3;"
" swap d1;"
" tstw d1;"
" bnes LC4;"
" movew d0,d2;"
" clrw d0;"
" swap d0;"
" divu d3,d0;"
" movel d0,d1;"
" swap d0;"
" movew d2,d1;"
" divu d3,d1;"
" movew d1,d0;"
" clrw d1;"
" swap d1;"
" jra LC1;"
"LC4: movel d0,d1;"
" swap d0;"
" clrw d0;"
" clrw d1;"
" swap d1;"
" moveq #16-1,d2;"
"LC3: addl d0,d0;"
" addxl d1,d1;"
" cmpl d1,d3;"
" bhis LC2;"
" subl d3,d1;"
" addqw #1,d0;"
"LC2: dbra d2,LC3;"
"LC1: movel sp@+,d2;"
" movel sp@+,d3;"
" rts;"
);