--- src.orig/arisparc.d Thu Dec 6 00:06:32 2007 +++ src/arisparc.d Mon Feb 2 15:35:22 2009 @@ -100,11 +100,11 @@ # extern struct { uint32 lo; uint32 hi; } mulu32_ (uint32 arg1, uint32 arg2); # 2^32*hi+lo := arg1*arg2. -C(mulu32_:) # Input in %o0,%o1, Output in %o0,%g1 +C(mulu32_:) # Input in %o0,%o1, Output in %o0,%g3 #ifdef sparcv8 umul %o0,%o1,%o0 retl - _ rd %y,%g1 + _ rd %y,%g3 #else mov %o1,%y sra %o0,31,%o3 # Wartetakt, nötig z.B. für SUN SPARCstation IPC @@ -143,7 +143,7 @@ mulscc %o2,%o0,%o2 mulscc %o2,%g0,%o2 and %o3,%o1,%o3 # %o3 = (0 falls %o0>=0, %o1 falls %o0<0) - add %o2,%o3,%g1 # hi + add %o2,%o3,%g3 # hi retl _ rd %y,%o0 # lo #endif @@ -216,7 +216,7 @@ # extern struct { uint32 q; uint32 r; } divu_6432_3232_ (uint32 xhi, uint32 xlo, uint32 y); # x = 2^32*xhi+xlo = q*y+r schreiben. Sei bekannt, dass 0 <= x < 2^32*y . -C(divu_6432_3232_:) # Input in %o0,%o1,%o2, Output in %o0,%g1 +C(divu_6432_3232_:) # Input in %o0,%o1,%o2, Output in %o0,%g3 #if defined(sparcv8) # Problem: Is udiv worth using (gmp-2.0.2 doesn't use it) ?? wr %o0,%g0,%y @@ -224,9 +224,9 @@ nop # wait 2 | processors such as Ross Hypersparc, nop # wait 3 | but not for most of the others. udiv %o1,%o2,%o0 # x durch y dividieren, %o0 := q - umul %o0,%o2,%g1 # %g1 := (q*y) mod 2^32 + umul %o0,%o2,%g3 # %g3 := (q*y) mod 2^32 retl - _ sub %o1,%g1,%g1 # %g1 := (xlo-q*y) mod 2^32 = r + _ sub %o1,%g3,%g3 # %g3 := (xlo-q*y) mod 2^32 = r #else # %o0 = xhi, %o1 = xlo, %o2 = y # Divisions-Einzelschritte: @@ -305,20 +305,20 @@ _ subcc %o0,%o2,%o3 subcc %o3,%o2,%o0 # muss der Quotient nochmals erhöht werden? bcs Ll03 - _ mov %o3,%g1 + _ mov %o3,%g3 # Quotient 2 mal erhöhen, Rest %o0 - mov %o0,%g1 + mov %o0,%g3 retl _ add %o1,2,%o0 Ll02: # kein Additions-Überlauf. # Wegen y>=2^31 muss der Quotient noch höchstens 1 mal erhöht werden: bcs Ll04 # %o0 < %o2 -> Rest %o0 und Quotient %o1 OK - _ mov %o3,%g1 + _ mov %o3,%g3 Ll03: # Quotient %o1 erhöhen, Rest = %o0-%o2 = %o3 retl _ add %o1,1,%o0 Ll04: # Quotient %o1 und Rest %o0 OK - mov %o0,%g1 + mov %o0,%g3 retl _ mov %o1,%o0 # Parallelschiene zu La01..La32: @@ -366,20 +366,20 @@ _ subcc %o3,%o2,%o0 subcc %o0,%o2,%o3 # muss der Quotient nochmals erhöht werden? bcs Ll06 - _ mov %o0,%g1 + _ mov %o0,%g3 # Quotient 2 mal erhöhen, Rest %o3 - mov %o3,%g1 + mov %o3,%g3 retl _ add %o1,2,%o0 Ll05: # kein Additions-Überlauf. # Wegen y>=2^31 muss der Quotient noch höchstens 1 mal erhöht werden: bcs Ll07 # %o3 < %o2 -> Rest %o3 und Quotient %o1 OK - _ mov %o0,%g1 + _ mov %o0,%g3 Ll06: # Quotient %o1 erhöhen, Rest = %o3-%o2 = %o0 retl _ add %o1,1,%o0 Ll07: # Quotient %o1 und Rest %o3 OK - mov %o3,%g1 + mov %o3,%g3 retl _ mov %o1,%o0 Lsmalldiv: # Division durch y < 2^31 @@ -416,7 +416,7 @@ Lc29: SB0(); SA0(Ld30) # Bit 2 des Quotienten bestimmen Lc30: SB0(); SA0(Ld31) # Bit 1 des Quotienten bestimmen Lc31: SB0(); SA0(Ld32) # Bit 0 des Quotienten bestimmen -Lc32: mov %o0,%g1 # Rest aus %o0 in %g1 abspeichern +Lc32: mov %o0,%g3 # Rest aus %o0 in %g3 abspeichern retl _ xor %o1,-1,%o0 # Quotient nach %o0 # Parallelschiene zu Lc01..Lc32: @@ -451,7 +451,7 @@ Ld29: SB1(); SA1(Lc30) Ld30: SB1(); SA1(Lc31) Ld31: SB1(); SA1(Lc32) -Ld32: mov %o3,%g1 # Rest aus %o3 in %g1 abspeichern +Ld32: mov %o3,%g3 # Rest aus %o3 in %g3 abspeichern retl _ xor %o1,-1,%o0 # Quotient nach %o0 Levendiv: # Division durch gerades y. @@ -493,7 +493,7 @@ Le30: SB0(); SA0(Lf31) # Bit 1 des Quotienten bestimmen Le31: SB0(); SA0(Lf32) # Bit 0 des Quotienten bestimmen Le32: SB0() # Bit 0 des Restes bestimmen - mov %o0,%g1 # Rest aus %o0 in %g1 abspeichern + mov %o0,%g3 # Rest aus %o0 in %g3 abspeichern retl _ xor %o1,-1,%o0 # Quotient nach %o0 # Parallelschiene zu Le01..Le32: @@ -529,7 +529,7 @@ Lf30: SB1(); SA1(Le31) Lf31: SB1(); SA1(Le32) Lf32: SB1() - mov %o3,%g1 # Rest aus %o0 in %g1 abspeichern + mov %o3,%g3 # Rest aus %o0 in %g3 abspeichern retl _ xor %o1,-1,%o0 # Quotient nach %o0 #endif @@ -1205,18 +1205,18 @@ #endif # extern uintD add_loop_down (uintD* sourceptr1, uintD* sourceptr2, uintD* destptr, uintC count); -C(add_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1, Output in %o0 +C(add_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3, Output in %o0 #if STANDARD_LOOPS andcc %o3,%o3,%g0 be Ll49 - _ mov %g0,%g1 # Carry := 0 + _ mov %g0,%g3 # Carry := 0 sub %o0,4,%o0 Ll48: ld [%o0],%o4 # source1-digit sub %o1,4,%o1 ld [%o1],%o5 # source2-digit - subcc %g0,%g1,%g0 # carry + subcc %g0,%g3,%g0 # carry addxcc %o4,%o5,%o4 # addieren - addx %g0,%g0,%g1 # neuer Carry + addx %g0,%g0,%g3 # neuer Carry sub %o2,4,%o2 st %o4,[%o2] # Digit ablegen subcc %o3,1,%o3 @@ -1223,12 +1223,12 @@ bne Ll48 _ sub %o0,4,%o0 Ll49: retl - _ mov %g1,%o0 + _ mov %g3,%o0 #endif #if COUNTER_LOOPS andcc %o3,%o3,%g0 be Ll49 - _ mov %g0,%g1 # Carry := 0 + _ mov %g0,%g3 # Carry := 0 sub %o0,4,%o0 sub %o1,4,%o1 sll %o3,2,%o3 # %o3 = 4*count @@ -1237,14 +1237,14 @@ sub %o2,%o3,%o2 # %o2 = &destptr[-count] Ll48: ld [%o0+%o3],%o4 # source1-digit ld [%o1+%o3],%o5 # source2-digit - subcc %g0,%g1,%g0 # carry + subcc %g0,%g3,%g0 # carry addxcc %o4,%o5,%o4 # addieren - addx %g0,%g0,%g1 # neuer Carry + addx %g0,%g0,%g3 # neuer Carry subcc %o3,4,%o3 bne Ll48 _ st %o4,[%o2+%o3] # Digit ablegen Ll49: retl - _ mov %g1,%o0 + _ mov %g3,%o0 #endif #if UNROLLED_LOOPS and %o3,7,%o4 # count mod 8 @@ -1257,7 +1257,7 @@ sub %o5,%o4,%o5 jmp %o5 # Sprung nach _add_loop_down+4*(12+4*8-4*(count mod 8)) _ subcc %g0,%g0,%g0 # carry löschen -Ll48: subcc %g0,%g1,%g0 # carry +Ll48: subcc %g0,%g3,%g0 # carry ld [%o0+28],%o4 # source1-digit ld [%o1+28],%o5 # source2-digit addxcc %o5,%o4,%o5 # addieren @@ -1290,7 +1290,7 @@ ld [%o1],%o5 # source2-digit addxcc %o5,%o4,%o5 # addieren st %o5,[%o2] # Digit ablegen - addx %g0,%g0,%g1 # neuer Carry + addx %g0,%g0,%g3 # neuer Carry sub %o0,32,%o0 sub %o1,32,%o1 subcc %o3,8,%o3 # noch mindestens 8 Digits abzuarbeiten? @@ -1297,7 +1297,7 @@ bcc Ll48 _ sub %o2,32,%o2 retl - _ mov %g1,%o0 + _ mov %g3,%o0 #endif # extern uintD addto_loop_down (uintD* sourceptr, uintD* destptr, uintC count); @@ -1431,18 +1431,18 @@ #endif # extern uintD sub_loop_down (uintD* sourceptr1, uintD* sourceptr2, uintD* destptr, uintC count); -C(sub_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1, Output in %o0 +C(sub_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3, Output in %o0 #if STANDARD_LOOPS andcc %o3,%o3,%g0 be Ll56 - _ mov %g0,%g1 # Carry := 0 + _ mov %g0,%g3 # Carry := 0 sub %o0,4,%o0 Ll55: ld [%o0],%o4 # source1-digit sub %o1,4,%o1 ld [%o1],%o5 # source2-digit - subcc %g0,%g1,%g0 # carry + subcc %g0,%g3,%g0 # carry subxcc %o4,%o5,%o4 # subtrahieren - addx %g0,%g0,%g1 # neuer Carry + addx %g0,%g0,%g3 # neuer Carry sub %o2,4,%o2 st %o4,[%o2] # Digit ablegen subcc %o3,1,%o3 @@ -1449,12 +1449,12 @@ bne Ll55 _ sub %o0,4,%o0 Ll56: retl - _ mov %g1,%o0 + _ mov %g3,%o0 #endif #if COUNTER_LOOPS andcc %o3,%o3,%g0 be Ll56 - _ mov %g0,%g1 # Carry := 0 + _ mov %g0,%g3 # Carry := 0 sub %o0,4,%o0 sub %o1,4,%o1 sll %o3,2,%o3 # %o3 = 4*count @@ -1463,14 +1463,14 @@ sub %o2,%o3,%o2 # %o2 = &destptr[-count] Ll55: ld [%o0+%o3],%o4 # source1-digit ld [%o1+%o3],%o5 # source2-digit - subcc %g0,%g1,%g0 # carry + subcc %g0,%g3,%g0 # carry subxcc %o4,%o5,%o4 # subtrahieren - addx %g0,%g0,%g1 # neuer Carry + addx %g0,%g0,%g3 # neuer Carry subcc %o3,4,%o3 bne Ll55 _ st %o4,[%o2+%o3] # Digit ablegen Ll56: retl - _ mov %g1,%o0 + _ mov %g3,%o0 #endif #if UNROLLED_LOOPS and %o3,7,%o4 # count mod 8 @@ -1483,7 +1483,7 @@ sub %o5,%o4,%o5 jmp %o5 # Sprung nach _sub_loop_down+4*(12+4*8-4*(count mod 8)) _ subcc %g0,%g0,%g0 # carry löschen -Ll55: subcc %g0,%g1,%g0 # carry +Ll55: subcc %g0,%g3,%g0 # carry ld [%o0+28],%o4 # source1-digit ld [%o1+28],%o5 # source2-digit subxcc %o4,%o5,%o4 # subtrahieren @@ -1516,7 +1516,7 @@ ld [%o1],%o5 # source2-digit subxcc %o4,%o5,%o4 # subtrahieren st %o4,[%o2] # Digit ablegen - addx %g0,%g0,%g1 # neuer Carry + addx %g0,%g0,%g3 # neuer Carry sub %o0,32,%o0 sub %o1,32,%o1 subcc %o3,8,%o3 # noch mindestens 8 Digits abzuarbeiten? @@ -1523,22 +1523,22 @@ bcc Ll55 _ sub %o2,32,%o2 retl - _ mov %g1,%o0 + _ mov %g3,%o0 #endif # extern uintD subx_loop_down (uintD* sourceptr1, uintD* sourceptr2, uintD* destptr, uintC count, uintD carry); -C(subx_loop_down:) # Input in %o0,%o1,%o2,%o3,%o4, verändert %g1, Output in %o0 +C(subx_loop_down:) # Input in %o0,%o1,%o2,%o3,%o4, verändert %g3, Output in %o0 #if STANDARD_LOOPS andcc %o3,%o3,%g0 be Ll58 - _ mov %o4,%g1 # Carry + _ mov %o4,%g3 # Carry sub %o0,4,%o0 Ll57: ld [%o0],%o4 # source1-digit sub %o1,4,%o1 ld [%o1],%o5 # source2-digit - subcc %g0,%g1,%g0 # carry + subcc %g0,%g3,%g0 # carry subxcc %o4,%o5,%o4 # subtrahieren - addx %g0,%g0,%g1 # neuer Carry + addx %g0,%g0,%g3 # neuer Carry sub %o2,4,%o2 st %o4,[%o2] # Digit ablegen subcc %o3,1,%o3 @@ -1545,12 +1545,12 @@ bne Ll57 _ sub %o0,4,%o0 Ll58: retl - _ mov %g1,%o0 + _ mov %g3,%o0 #endif #if COUNTER_LOOPS andcc %o3,%o3,%g0 be Ll58 - _ mov %o4,%g1 # Carry + _ mov %o4,%g3 # Carry sub %o0,4,%o0 sub %o1,4,%o1 sll %o3,2,%o3 # %o3 = 4*count @@ -1559,27 +1559,27 @@ sub %o2,%o3,%o2 # %o2 = &destptr[-count] Ll57: ld [%o0+%o3],%o4 # source1-digit ld [%o1+%o3],%o5 # source2-digit - subcc %g0,%g1,%g0 # carry + subcc %g0,%g3,%g0 # carry subxcc %o4,%o5,%o4 # subtrahieren - addx %g0,%g0,%g1 # neuer Carry + addx %g0,%g0,%g3 # neuer Carry subcc %o3,4,%o3 bne Ll57 _ st %o4,[%o2+%o3] # Digit ablegen Ll58: retl - _ mov %g1,%o0 + _ mov %g3,%o0 #endif #if UNROLLED_LOOPS and %o3,7,%o5 # count mod 8 - sll %o5,2,%g1 - sub %o0,%g1,%o0 # %o0 = &sourceptr1[-(count mod 8)] - sub %o1,%g1,%o1 # %o1 = &sourceptr2[-(count mod 8)] - sub %o2,%g1,%o2 # %o2 = &destptr[-(count mod 8)] + sll %o5,2,%g3 + sub %o0,%g3,%o0 # %o0 = &sourceptr1[-(count mod 8)] + sub %o1,%g3,%o1 # %o1 = &sourceptr2[-(count mod 8)] + sub %o2,%g3,%o2 # %o2 = &destptr[-(count mod 8)] sll %o5,4,%o5 - set _subx_loop_down+176,%g1 - sub %g1,%o5,%g1 - jmp %g1 # Sprung nach _subx_loop_down+4*(12+4*8-4*(count mod 8)) + set _subx_loop_down+176,%g3 + sub %g3,%o5,%g3 + jmp %g3 # Sprung nach _subx_loop_down+4*(12+4*8-4*(count mod 8)) _ subcc %g0,%o4,%g0 # carry initialisieren -Ll57: subcc %g0,%g1,%g0 # carry +Ll57: subcc %g0,%g3,%g0 # carry ld [%o0+28],%o4 # source1-digit ld [%o1+28],%o5 # source2-digit subxcc %o4,%o5,%o4 # subtrahieren @@ -1612,7 +1612,7 @@ ld [%o1],%o5 # source2-digit subxcc %o4,%o5,%o4 # subtrahieren st %o4,[%o2] # Digit ablegen - addx %g0,%g0,%g1 # neuer Carry + addx %g0,%g0,%g3 # neuer Carry sub %o0,32,%o0 sub %o1,32,%o1 subcc %o3,8,%o3 # noch mindestens 8 Digits abzuarbeiten? @@ -1619,7 +1619,7 @@ bcc Ll57 _ sub %o2,32,%o2 retl - _ mov %g1,%o0 + _ mov %g3,%o0 #endif # extern uintD subfrom_loop_down (uintD* sourceptr, uintD* destptr, uintC count); @@ -1831,10 +1831,10 @@ _ mov %o3,%o0 # extern uintD shiftleft_loop_down (uintD* ptr, uintC count, uintC i, uintD carry); -C(shiftleft_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1, Output in %o0 +C(shiftleft_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3, Output in %o0 andcc %o1,%o1,%g0 be Ll72 - _ sub %g0,%o2,%g1 # 32-i (mod 32) + _ sub %g0,%o2,%g3 # 32-i (mod 32) sub %o0,4,%o0 Ll71: ld [%o0],%o4 # Digit subcc %o1,1,%o1 @@ -1841,7 +1841,7 @@ sll %o4,%o2,%o5 # dessen niedere (32-i) Bits or %o3,%o5,%o5 # mit dem alten Carry kombinieren st %o5,[%o0] # Digit ablegen - srl %o4,%g1,%o3 # dessen höchste i Bits liefern den neuen Carry + srl %o4,%g3,%o3 # dessen höchste i Bits liefern den neuen Carry bne Ll71 _ sub %o0,4,%o0 Ll72: retl @@ -1848,11 +1848,11 @@ _ mov %o3,%o0 # extern uintD shiftleftcopy_loop_down (uintD* sourceptr, uintD* destptr, uintC count, uintC i); -C(shiftleftcopy_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1,%g2, Output in %o0 +C(shiftleftcopy_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3,%g2, Output in %o0 andcc %o2,%o2,%g0 be Ll74 _ mov 0,%o4 # Carry := 0 - sub %g0,%o3,%g1 # 32-i (mod 32) + sub %g0,%o3,%g3 # 32-i (mod 32) sub %o0,4,%o0 Ll73: ld [%o0],%o5 # Digit subcc %o2,1,%o2 @@ -1860,7 +1860,7 @@ or %o4,%g2,%g2 # mit dem alten Carry kombinieren sub %o1,4,%o1 st %g2,[%o1] # Digit ablegen - srl %o5,%g1,%o4 # dessen höchste i Bits liefern den neuen Carry + srl %o5,%g3,%o4 # dessen höchste i Bits liefern den neuen Carry bne Ll73 _ sub %o0,4,%o0 Ll74: retl @@ -1883,17 +1883,17 @@ _ mov %o2,%o0 # extern uintD shiftright_loop_up (uintD* ptr, uintC count, uintC i); -C(shiftright_loop_up:) # Input in %o0,%o1,%o2, verändert %g1, Output in %o0 +C(shiftright_loop_up:) # Input in %o0,%o1,%o2, verändert %g3, Output in %o0 andcc %o1,%o1,%g0 be Ll78 _ or %g0,%g0,%o3 # Carry := 0 - sub %g0,%o2,%g1 # 32-i (mod 32) + sub %g0,%o2,%g3 # 32-i (mod 32) Ll77: ld [%o0],%o4 # Digit subcc %o1,1,%o1 srl %o4,%o2,%o5 # shiften or %o3,%o5,%o5 # und mit altem Carry kombinieren st %o5,[%o0] # und ablegen - sll %o4,%g1,%o3 # neuer Carry + sll %o4,%g3,%o3 # neuer Carry bne Ll77 _ add %o0,4,%o0 Ll78: retl @@ -1900,12 +1900,12 @@ _ mov %o3,%o0 # extern uintD shiftrightsigned_loop_up (uintD* ptr, uintC count, uintC i); -C(shiftrightsigned_loop_up:) # Input in %o0,%o1,%o2, verändert %g1, Output in %o0 +C(shiftrightsigned_loop_up:) # Input in %o0,%o1,%o2, verändert %g3, Output in %o0 ld [%o0],%o4 # erstes Digit - sub %g0,%o2,%g1 # 32-i (mod 32) + sub %g0,%o2,%g3 # 32-i (mod 32) sra %o4,%o2,%o5 # shiften st %o5,[%o0] # und ablegen - sll %o4,%g1,%o3 # neuer Carry + sll %o4,%g3,%o3 # neuer Carry subcc %o1,1,%o1 be Ll80 _ add %o0,4,%o0 @@ -1914,7 +1914,7 @@ srl %o4,%o2,%o5 # shiften or %o3,%o5,%o5 # und mit altem Carry kombinieren st %o5,[%o0] # und ablegen - sll %o4,%g1,%o3 # neuer Carry + sll %o4,%g3,%o3 # neuer Carry bne Ll79 _ add %o0,4,%o0 Ll80: retl @@ -1921,17 +1921,17 @@ _ mov %o3,%o0 # extern uintD shiftrightcopy_loop_up (uintD* sourceptr, uintD* destptr, uintC count, uintC i, uintD carry); -C(shiftrightcopy_loop_up:) # Input in %o0,%o1,%o2,%o3,%o4, verändert %g1,%g2, Output in %o0 - sub %g0,%o3,%g1 # 32-i (mod 32) +C(shiftrightcopy_loop_up:) # Input in %o0,%o1,%o2,%o3,%o4, verändert %g3,%g2, Output in %o0 + sub %g0,%o3,%g3 # 32-i (mod 32) andcc %o2,%o2,%g0 be Ll82 - _ sll %o4,%g1,%g2 # erster Carry + _ sll %o4,%g3,%g2 # erster Carry Ll81: ld [%o0],%o4 # Digit add %o0,4,%o0 srl %o4,%o3,%o5 # shiften or %g2,%o5,%o5 # und mit altem Carry kombinieren st %o5,[%o1] # und ablegen - sll %o4,%g1,%g2 # neuer Carry + sll %o4,%g3,%g2 # neuer Carry subcc %o2,1,%o2 bne Ll81 _ add %o1,4,%o1 @@ -1982,7 +1982,7 @@ call _mulu32_ # mit digit multiplizieren _ mov %i0,%o0 addcc %l0,%o0,%o0 # und bisherigen Carry addieren - addx %g0,%g1,%l0 # High-Digit gibt neuen Carry + addx %g0,%g3,%l0 # High-Digit gibt neuen Carry sub %i2,4,%i2 subcc %i3,1,%i3 bne Ll86 @@ -1991,16 +1991,16 @@ ret _ restore #else -C(mulu_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1 +C(mulu_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3 mov 0,%o4 # Carry -Ll87: ld [%o1-4],%g1 # nächstes Digit - # mit digit multiplizieren: %o0 * %g1 -> %o5|%g1 +Ll87: ld [%o1-4],%g3 # nächstes Digit + # mit digit multiplizieren: %o0 * %g3 -> %o5|%g3 #ifdef sparcv8 sub %o1,4,%o1 - umul %g1,%o0,%g1 + umul %g3,%o0,%g3 rd %y,%o5 #else - mov %g1,%y + mov %g3,%y sub %o1,4,%o1 # Wartetakt! andcc %g0,%g0,%o5 mulscc %o5,%o0,%o5 @@ -2038,15 +2038,15 @@ mulscc %o5,%g0,%o5 tst %o0 bl,a Ll88 - __ add %o5,%g1,%o5 -Ll88: rd %y,%g1 + __ add %o5,%g3,%o5 +Ll88: rd %y,%g3 #endif - addcc %o4,%g1,%g1 # und bisherigen Carry addieren + addcc %o4,%g3,%g3 # und bisherigen Carry addieren addx %g0,%o5,%o4 # High-Digit gibt neuen Carry sub %o2,4,%o2 subcc %o3,1,%o3 bne Ll87 - _ st %g1,[%o2] # Low-Digit ablegen + _ st %g3,[%o2] # Low-Digit ablegen retl _ st %o4,[%o2-4] # letzten Carry ablegen #endif @@ -2063,7 +2063,7 @@ sub %i2,4,%i2 ld [%i2],%o1 # nächstes dest-digit addcc %l0,%o0,%o0 # und bisherigen Carry addieren - addx %g0,%g1,%l0 # High-Digit gibt neuen Carry + addx %g0,%g3,%l0 # High-Digit gibt neuen Carry addcc %o1,%o0,%o0 # addieren addx %g0,%l0,%l0 subcc %i3,1,%i3 @@ -2150,7 +2150,7 @@ sub %i2,4,%i2 ld [%i2],%o1 # nächstes dest-digit addcc %l0,%o0,%o0 # und bisherigen Carry addieren - addx %g0,%g1,%l0 # High-Digit gibt neuen Carry + addx %g0,%g3,%l0 # High-Digit gibt neuen Carry subcc %o1,%o0,%o1 # davon das Low-Digit subtrahieren addx %g0,%l0,%l0 subcc %i3,1,%i3 @@ -2230,16 +2230,16 @@ save %sp,-96,%sp andcc %i2,%i2,%g0 be Ll92 - _ mov 0,%g1 # Rest -Ll91: mov %g1,%o0 # Rest als High-Digit + _ mov 0,%g3 # Rest +Ll91: mov %g3,%o0 # Rest als High-Digit ld [%i1],%o1 # nächstes Digit als Low-Digit call C(divu_6432_3232_) # zusammen durch digit dividieren _ mov %i0,%o2 - st %o0,[%i1] # Quotient ablegen, Rest in %g1 + st %o0,[%i1] # Quotient ablegen, Rest in %g3 subcc %i2,1,%i2 bne Ll91 _ add %i1,4,%i1 -Ll92: mov %g1,%i0 # Rest als Ergebnis +Ll92: mov %g3,%i0 # Rest als Ergebnis ret _ restore @@ -2248,17 +2248,17 @@ save %sp,-96,%sp andcc %i3,%i3,%g0 be Ll94 - _ mov 0,%g1 # Rest -Ll93: mov %g1,%o0 # Rest als High-Digit + _ mov 0,%g3 # Rest +Ll93: mov %g3,%o0 # Rest als High-Digit ld [%i1],%o1 # nächstes Digit als Low-Digit call C(divu_6432_3232_) # zusammen durch digit dividieren _ mov %i0,%o2 - st %o0,[%i2] # Quotient ablegen, Rest in %g1 + st %o0,[%i2] # Quotient ablegen, Rest in %g3 add %i1,4,%i1 subcc %i3,1,%i3 bne Ll93 _ add %i2,4,%i2 -Ll94: mov %g1,%i0 # Rest als Ergebnis +Ll94: mov %g3,%i0 # Rest als Ergebnis ret _ restore