hi! ich habe hier im forum/tutorial die divisionsroutine für zwei 32bit zahlen in assembler gefunden. eigentlich brauche ich nur 32bit/16bit, würde aber die 32/32 dafür nehmen. rechenzeit sollte genug da sein und ich brauch nur eine solche division pro sekunde. diese routine .DEFiniert sich 12 registernamen, wovon die letzten beiden (t2 und t3) probleme bereiten. .def t2=r26 -> warning: register r26 already defined by the .def directive .def t3=r27 -> warning: register r27 already defined by the .def directive was mich wundert, die anderen 10 .DEFs gehen problemlos durch. und wieso regt er sich über die registernamen R26 und R27 auf und nicht über T2 und T3? kann ich die beiden warnings ignorieren? würde ich ungerne machen, irgendwas muß ja komisch daran sein. den fehler beheben der die beiden warnings erzeugt wäre mir aber lieber. plan B wäre eine 32/16bit divisionsroutine falls jemand sowas parat hat. danke!
Ja, diese Warnungen sind nervig. Eine Mehrfachnutzung von Registern ist ja normal. Du kannst sie aber umgehen, durch
1 | |
Peter
okay danke dir, dann werde ich das ändern. noch eine frage weil du sonst immer alles an code hast: liegt bei dir eine 32/16bit divisionsroutine in AVR assembler in der schublade? :)
Ben _ schrieb: > okay danke dir, dann werde ich das ändern. > > noch eine frage weil du sonst immer alles an code hast: > liegt bei dir eine 32/16bit divisionsroutine in AVR assembler in der > schublade? :) Nur 56 / 24, das Prinzip sollte aber leicht zu erkennen sein:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
Peter
56bit... weiaaa wozu braucht ihr solche zahlen! :D im moment blick ich durch solche routinen noch nicht so gut durch, daß ich eigene schreiben könnte, daher muß ich hier auch so oft wegen dem kram fragen. ziel ist im moment eine eigene sammlung solcher routinen anzulegen wo man weiß sie funktionieren alle und man kann sie sich von dort holen wenn man sie braucht.
Gast
#1529852
r26 und r27 sind halt über die AVR-Includes schon als XL und XH (X-Pointer) definiert.
Z.B. für nen Frequenzmesser: F_in = F_Quarz * count_in / count_timebase
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
Peter
klasse, danke dir für deine mühe! habe allerdings doch noch ein byte mehr gebraucht als ich gedacht hatte (24 bit divisor anstatt 16 bit), geht jetzt super mit der 32/32bit routine. frequenzmesser ist schon einigermaßen dicht dran. allerdings wirds doch nur ein elektronischer stromzähler. :)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.