📄 lib1funcs.asm
字号:
ds %r1,divisor,%r1 addc dividend,dividend,dividend ds %r1,divisor,%r1 addc dividend,dividend,dividend ds %r1,divisor,%r1 addc dividend,dividend,dividend comclr,>= %r1,%r0,%r0 addl %r1,divisor,%r1 comclr,>= quotient,%r0,%r0 ; skip of no need to negate sub %r0,%r1,%r1 bv %r0(ret) copy %r1,quotientL$largedivisor sub,>>= dividend,divisor,quotient copy dividend,quotient bv,n %r0(ret) .exit .procend#endif#if defined (L_divU_3) && !defined (SMALL_LIB)#undef L_divU_3#define dividend %r26#define divisor %r25#define tmp %r1#define result %r29#define ret %r31 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divU_3$$divU_3 .proc .callinfo frame=0,no_calls .entry sh2add %r26,%r26,%r29 ; r29 = lo(101 x r) shd %r0,%r26,30,%r1 ; r1 = hi(100 x r) addc %r1,%r0,%r1 ; r1 = hi(101 x r); r in r1,,r29 zdep %r29,27,28,%r25 ; r25 = lo(10000 x r) add %r25,%r29,%r25 ; r25 = lo(10001 x r) shd %r1,%r29,28,%r29 ; r29 = hi(10000 x r) addc %r29,%r1,%r29 ; r29 = hi(10001 x r); r in r29,,r25 zdep %r25,23,24,%r1 ; r1 = lo(100000000 x r) add %r1,%r25,%r1 ; r1 = lo(100000001 x r) shd %r29,%r25,24,%r25 ; r25 = hi(100000000 x r) addc %r25,%r29,%r25 ; r25 = hi(100000001 x r); r in r25,,r1 zdep %r1,15,16,%r29 add %r29,%r1,%r29 shd %r25,%r1,16,%r1 addc %r1,%r25,%r1; r in r1,,r29 sh1add %r29,%r26,%r0 ; r0 = lo(10 x r) + dividend shd %r1,%r29,31,%r29 ; r29 = hi(10 x r) addc %r29,%r0,%r29 bv %r0(ret) extru %r29,30,31,result .exit .procend#endif#if defined (L_divU_5) && !defined (SMALL_LIB)#undef L_divU_5#define dividend %r26#define divisor %r25#define tmp %r1#define result %r29#define ret %r31 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divU_5$$divU_5 .proc .callinfo frame=0,no_calls .entry sh1add %r26,%r26,%r29 ; r29 = lo(11 x r) shd %r0,%r26,31,%r1 ; r1 = hi(10 x r) addc %r1,%r0,%r1 ; r1 = hi(11 x r); r in r1,,r29 zdep %r29,27,28,%r25 ; r25 = lo(10000 x r) add %r25,%r29,%r25 ; r25 = lo(10001 x r) shd %r1,%r29,28,%r29 ; r29 = hi(10000 x r) addc %r29,%r1,%r29 ; r29 = hi(10001 x r); r in r29,,r25 zdep %r25,23,24,%r1 ; r1 = lo(100000000 x r) add %r1,%r25,%r1 ; r1 = lo(100000001 x r) shd %r29,%r25,24,%r25 ; r25 = hi(100000000 x r) addc %r25,%r29,%r25 ; r25 = hi(100000001 x r); r in r25,,r1 zdep %r1,15,16,%r29 add %r29,%r1,%r29 shd %r25,%r1,16,%r1 addc %r1,%r25,%r1; r in r1,,r29 sh2add %r29,%r26,%r0 ; r0 = lo(1000 x r) + dividend shd %r1,%r29,30,%r29 ; r29 = hi(1000 x r) addc %r29,%r0,%r29 bv %r0(ret) extru %r29,29,30,result .exit .procend#endif#if defined (L_divU_6) && !defined (SMALL_LIB)#undef L_divU_6#define dividend %r26#define divisor %r25#define tmp %r1#define result %r29#define ret %r31 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divU_6$$divU_6 .proc .callinfo frame=0,no_calls .entry sh2add %r26,%r26,%r29 ; r29 = lo(101 x r) shd %r0,%r26,30,%r1 ; r1 = hi(100 x r) addc %r1,%r0,%r1 ; r1 = hi(101 x r); r in r1,,r29 zdep %r29,27,28,%r25 ; r25 = lo(10000 x r) add %r25,%r29,%r25 ; r25 = lo(10001 x r) shd %r1,%r29,28,%r29 ; r29 = hi(10000 x r) addc %r29,%r1,%r29 ; r29 = hi(10001 x r); r in r29,,r25 zdep %r25,23,24,%r1 ; r1 = lo(100000000 x r) add %r1,%r25,%r1 ; r1 = lo(100000001 x r) shd %r29,%r25,24,%r25 ; r25 = hi(100000000 x r) addc %r25,%r29,%r25 ; r25 = hi(100000001 x r); r in r25,,r1 zdep %r1,15,16,%r29 add %r29,%r1,%r29 shd %r25,%r1,16,%r1 addc %r1,%r25,%r1; r in r1,,r29 sh1add %r29,%r26,%r0 ; r0 = lo(10 x r) + dividend shd %r1,%r29,31,%r29 ; r29 = hi(10 x r) addc %r29,%r0,%r29 bv %r0(ret) extru %r29,29,30,result .exit .procend#endif#if defined (L_divU_9) && !defined (SMALL_LIB)#undef L_divU_9#define dividend %r26#define divisor %r25#define tmp %r1#define result %r29#define ret %r31 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divU_9$$divU_9 .proc .callinfo frame=0,no_calls .entry zdep %r26,28,29,%r29 sub %r29,%r26,%r29 shd 0,%r26,29,%r1 subb %r1,0,%r1 /* 111 */ zdep %r29,25,26,%r25 add %r25,%r29,%r25 shd %r1,%r29,26,%r29 addc %r29,%r1,%r29 /* 111000111 */ sh3add %r25,%r26,%r1 shd %r29,%r25,29,%r25 addc %r25,0,%r25 /* 111000111001 */ zdep %r1,16,17,%r29 sub %r29,%r1,%r29 shd %r25,%r1,17,%r1 subb %r1,%r25,%r1 /* 111000111000111000111000111 */ sh3add %r29,%r26,%r0 shd %r1,%r29,29,%r29 addc %r29,0,%r29 /* 111000111000111000111000111001 */ bv %r0(ret) extru %r29,30,31,result .exit .procend#endif#if defined (L_divU_10) && !defined (SMALL_LIB)#undef L_divU_10#define dividend %r26#define divisor %r25#define tmp %r1#define result %r29#define ret %r31 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divU_10$$divU_10 .proc .callinfo frame=0,no_calls .entry sh1add %r26,%r26,%r29 ; r29 = lo(11 x r) shd %r0,%r26,31,%r1 ; r1 = hi(10 x r) addc %r1,%r0,%r1 ; r1 = hi(11 x r); r in r1,,r29 zdep %r29,27,28,%r25 ; r25 = lo(10000 x r) add %r25,%r29,%r25 ; r25 = lo(10001 x r) shd %r1,%r29,28,%r29 ; r29 = hi(10000 x r) addc %r29,%r1,%r29 ; r29 = hi(10001 x r); r in r29,,r25 zdep %r25,23,24,%r1 ; r1 = lo(100000000 x r) add %r1,%r25,%r1 ; r1 = lo(100000001 x r) shd %r29,%r25,24,%r25 ; r25 = hi(100000000 x r) addc %r25,%r29,%r25 ; r25 = hi(100000001 x r); r in r25,,r1 zdep %r1,15,16,%r29 add %r29,%r1,%r29 shd %r25,%r1,16,%r1 addc %r1,%r25,%r1; r in r1,,r29 sh2add %r29,%r26,%r0 ; r0 = lo(1000 x r) + dividend shd %r1,%r29,30,%r29 ; r29 = hi(1000 x r) addc %r29,%r0,%r29 bv %r0(ret) extru %r29,28,29,result .exit .procend#endif#if defined (L_divU_12) && !defined (SMALL_LIB)#undef L_divU_12#define dividend %r26#define divisor %r25#define tmp %r1#define result %r29#define ret %r31 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divU_12$$divU_12 .proc .callinfo frame=0,no_calls .entry sh2add %r26,%r26,%r29 ; r29 = lo(101 x r) shd %r0,%r26,30,%r1 ; r1 = hi(100 x r) addc %r1,%r0,%r1 ; r1 = hi(101 x r); r in r1,,r29 zdep %r29,27,28,%r25 ; r25 = lo(10000 x r) add %r25,%r29,%r25 ; r25 = lo(10001 x r) shd %r1,%r29,28,%r29 ; r29 = hi(10000 x r) addc %r29,%r1,%r29 ; r29 = hi(10001 x r); r in r29,,r25 zdep %r25,23,24,%r1 ; r1 = lo(100000000 x r) add %r1,%r25,%r1 ; r1 = lo(100000001 x r) shd %r29,%r25,24,%r25 ; r25 = hi(100000000 x r) addc %r25,%r29,%r25 ; r25 = hi(100000001 x r); r in r25,,r1 zdep %r1,15,16,%r29 add %r29,%r1,%r29 shd %r25,%r1,16,%r1 addc %r1,%r25,%r1; r in r1,,r29 sh1add %r29,%r26,%r0 ; r0 = lo(10 x r) + dividend shd %r1,%r29,31,%r29 ; r29 = hi(10 x r) addc %r29,%r0,%r29 bv %r0(ret) extru %r29,28,29,result .exit .procend#endif#ifdef L_divU_3 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divU_3$$divU_3 .proc .callinfo frame=0,no_calls .entry b $$divU ldi 3,%r25 .exit .procend .import $$divU,MILLICODE#endif#ifdef L_divU_5 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divU_5$$divU_5 .proc .callinfo frame=0,no_calls .entry b $$divU ldi 5,%r25 .exit .procend .import $$divU,MILLICODE#endif#ifdef L_divU_6 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divU_6$$divU_6 .proc .callinfo frame=0,no_calls .entry b $$divU ldi 6,%r25 .exit .procend .import $$divU,MILLICODE#endif#ifdef L_divU_7 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divU_7$$divU_7 .proc .callinfo frame=0,no_calls .entry b $$divU ldi 7,%r25 .exit .procend .import $$divU,MILLICODE#endif#ifdef L_divU_9 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divU_9$$divU_9 .proc .callinfo frame=0,no_calls .entry b $$divU ldi 9,%r25 .exit .procend .import $$divU,MILLICODE#endif#ifdef L_divU_10 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divU_10$$divU_10 .proc .callinfo frame=0,no_calls .entry b $$divU ldi 10,%r25 .exit .procend .import $$divU,MILLICODE#endif#ifdef L_divU_12 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divU_12$$divU_12 .proc .callinfo frame=0,no_calls .entry b $$divU ldi 12,%r25 .exit .procend .import $$divU,MILLICODE#endif#ifdef L_divU_14 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divU_14$$divU_14 .proc .callinfo frame=0,no_calls .entry b $$divU ldi 14,%r25 .exit .procend .import $$divU,MILLICODE#endif#ifdef L_divU_15 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divU_15$$divU_15 .proc .callinfo frame=0,no_calls .entry b $$divU ldi 15,%r25 .exit .procend .import $$divU,MILLICODE#endif#ifdef L_divI_3 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divI_3$$divI_3 .proc .callinfo frame=0,no_calls .entry b $$divI ldi 3,%r25 .exit .procend .import $$divI,MILLICODE#endif#ifdef L_divI_5 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divI_5$$divI_5 .proc .callinfo frame=0,no_calls .entry b $$divI ldi 5,%r25 .exit .procend .import $$divI,MILLICODE#endif#ifdef L_divI_6 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divI_6$$divI_6 .proc .callinfo frame=0,no_calls .entry b $$divI ldi 6,%r25 .exit .procend .import $$divI,MILLICODE#endif#ifdef L_divI_7 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divI_7$$divI_7 .proc .callinfo frame=0,no_calls .entry b $$divI ldi 7,%r25 .exit .procend .import $$divI,MILLICODE#endif#ifdef L_divI_9 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divI_9$$divI_9 .proc .callinfo frame=0,no_calls .entry b $$divI ldi 9,%r25 .exit .procend .import $$divI,MILLICODE#endif#ifdef L_divI_10 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divI_10$$divI_10 .proc .callinfo frame=0,no_calls .entry b $$divI ldi 10,%r25 .exit .procend .import $$divI,MILLICODE#endif#ifdef L_divI_12 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divI_12$$divI_12 .proc .callinfo frame=0,no_calls .entry b $$divI ldi 12,%r25 .exit .procend .import $$divI,MILLICODE#endif#ifdef L_divI_14 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divI_14$$divI_14 .proc .callinfo frame=0,no_calls .entry b $$divI ldi 14,%r25 .exit .procend .import $$divI,MILLICODE#endif#ifdef L_divI_15 .space $TEXT$ .subspa $MILLICODE$,quad=0,align=8,access=0x2c,sort=8 .align 4 .export $$divI_15$$divI_15 .proc .callinfo frame=0,no_calls .entry b $$divI ldi 15,%r25 .exit .procend .import $$divI,MILLICODE#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -