/[avr-libc]/avr-libc/libc/misc/utoa.S
ViewVC logotype

Diff of /avr-libc/libc/misc/utoa.S

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by troth, Tue Sep 30 23:05:17 2003 UTC revision 1.3.4.1 by aesok, Wed Oct 12 20:37:02 2005 UTC
# Line 26  Line 26 
26    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27    POSSIBILITY OF SUCH DAMAGE. */    POSSIBILITY OF SUCH DAMAGE. */
28    
29    /* $Id$ */
30    
31  /*  /*
32     utoa.S     utoa.S
33    
# Line 66  _U(utoa): Line 68  _U(utoa):
68          mov     r_lstr_lo, ZL   ; save &string          mov     r_lstr_lo, ZL   ; save &string
69          mov     r_lstr_hi, ZH          mov     r_lstr_hi, ZH
70          cpi     r_radix, 2      ; no radix < 2          cpi     r_radix, 2      ; no radix < 2
71          brlt    terminate          brlt    99f
72          cpi     r_radix, 37     ; no radix > 36          cpi     r_radix, 37     ; no radix > 36
73          brge    terminate                brge    99f    
74  divide_loop:  1:
75          mov     r22, r_radix    ; radix          mov     r22, r_radix    ; radix
76          clr     r23             ;  dividend in r25:r24,   divisor in r23:r22          clr     r23             ;  dividend in r25:r24,   divisor in r23:r22
77          XCALL   _U(__udivmodhi4);  quotient in r23:r22, remainder in r25:r24          XCALL   _U(__udivmodhi4);  quotient in r23:r22, remainder in r25:r24
# Line 77  divide_loop: Line 79  divide_loop:
79                                  ;  call-used but preserved: r18,r19,r20,r30,r31                                  ;  call-used but preserved: r18,r19,r20,r30,r31
80          subi    r24, 0xd0       ; + '0'          subi    r24, 0xd0       ; + '0'
81          cpi     r24, 0x3a       ; > '9' ?          cpi     r24, 0x3a       ; > '9' ?
82          brlt    L_10          brlt    10f
83          subi    r24, 0xd9       ; + 'a' - 10 - '0'          subi    r24, 0xd9       ; + 'a' - 10 - '0'
84  L_10:  10:
85          st      Z+, r24         ; write char to string in reverse order!          st      Z+, r24         ; write char to string in reverse order!
86          mov     r_val_lo,r22    ; quotient -> dividend          mov     r_val_lo,r22    ; quotient -> dividend
87          mov     r_val_hi,r23          mov     r_val_hi,r23
88          sbiw    r_val_lo,0      ; value == 0 ?          sbiw    r_val_lo,0      ; value == 0 ?
89          brne    divide_loop          brne    1b
90  terminate:  99:
91          mov     r_val_hi, r_lstr_hi     ; restore &string as return value          mov     r_val_hi, r_lstr_hi     ; restore &string as return value
92          mov     r_val_lo, r_lstr_lo          mov     r_val_lo, r_lstr_lo
93          st      Z, __zero_reg__ ; terminate string          st      Z, __zero_reg__ ; terminate string

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.3.4.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26