lb1spl.asm
来自「这是一个linux 嵌入式系统中很重要的GCC编译器程序」· 汇编 代码 · 共 247 行
ASM
247 行
/* This is an assembly language implementation of libgcc1.c for the sparclite processor. These routines are all from the Sparclite User's Guide, slightly edited to match the desired calling convention, and also to optimize them. */#ifdef L_udivsi3.text .align 4 .global .udiv .proc 04.udiv: wr %g0,%g0,%y ! Not a delayed write for sparclite tst %g0 divscc %o0,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 retl divscc %g1,%o1,%o0#endif#ifdef L_umodsi3.text .align 4 .global .urem .proc 04.urem: wr %g0,%g0,%y ! Not a delayed write for sparclite tst %g0 divscc %o0,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 divscc %g1,%o1,%g1 bl 1f rd %y,%o0 retl nop1: retl add %o0,%o1,%o0#endif#ifdef L_divsi3.text .align 4 .global .div .proc 04! ??? This routine could be made faster if was optimized, and if it was! rewritten to only calculate the quotient..div: wr %g0,%g0,%y ! Not a delayed write for sparclite mov %o1,%o4 tst %o1 bl,a 1f sub %g0,%o4,%o41: tst %o0 bl,a 2f mov -1,%y2: divscc %o0,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 be 6f mov %y,%o3 bg 4f addcc %o3,%o4,%g0 be,a 6f mov %g0,%o3 tst %o0 bl 5f tst %g1 ba 5f add %o3,%o4,%o34: subcc %o3,%o4,%g0 be,a 6f mov %g0,%o3 tst %o0 bge 5f tst %g1 sub %o3,%o4,%o35: bl,a 6f add %g1,1,%g16: tst %o1 bl,a 7f sub %g0,%g1,%g17: retl mov %g1,%o0 ! Quotient is in %g1.#endif#ifdef L_modsi3.text .align 4 .global .rem .proc 04! ??? This routine could be made faster if was optimized, and if it was! rewritten to only calculate the remainder..rem: wr %g0,%g0,%y ! Not a delayed write for sparclite mov %o1,%o4 tst %o1 bl,a 1f sub %g0,%o4,%o41: tst %o0 bl,a 2f mov -1,%y2: divscc %o0,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 divscc %g1,%o4,%g1 be 6f mov %y,%o3 bg 4f addcc %o3,%o4,%g0 be,a 6f mov %g0,%o3 tst %o0 bl 5f tst %g1 ba 5f add %o3,%o4,%o34: subcc %o3,%o4,%g0 be,a 6f mov %g0,%o3 tst %o0 bge 5f tst %g1 sub %o3,%o4,%o35: bl,a 6f add %g1,1,%g16: tst %o1 bl,a 7f sub %g0,%g1,%g17: retl mov %o3,%o0 ! Remainder is in %o3.#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?