Gast
#1397917
Was ist der Unterschied?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
1 | |
2 | |
3 | |
4 | |
5 | |
Genauso beim Funktionsaufruf: besser zwei Byte übergeben oder eine 16 Bit-Variable?
|
Anzeige
|
Zwei Schleifen über uint8_t oder eine über uint16_t mit AVR?
Gast
#1397917
Was ist der Unterschied?
Genauso beim Funktionsaufruf: besser zwei Byte übergeben oder eine 16 Bit-Variable? schau dir doch an was der Compiler erzeugt... z.B. in AvrStudio Debugger.. > Was ist der Unterschied?
Die erste Lösung ist unübersichtlicher :-o
Da es SBIW als Befehl gibt, müsste die 16-bit-Variante ein Wort pro Schleifendurchlauf weniger brauchen.
Gast
#1399066
im do hast du einmal die werte x und y und einmal 'nur' z zur Verfügung. Wenn du in der zweiten Variante die beiden Werte brauchst, dann mußt du sie erst durch Division und Modulo bei jedem Durchgang berechnen. Wenn du einfach 6566 mal etwas machen willst, dann ist die 2. Variante übersichtlicher. Wenn du 67 mal 98 mal etwas machen willst (also wenn x und y aussagekräftige namen haben und man daraus sieht warum eine Schleife 67 mal, die andere 98 mal durchlaufen wird) dann ist die 1. Variante übersichtlicher. Wenn du die Optimierung eingeschaltet hast würd ich mir für beide Codeschnipsel die selbe Übersetzung erwarten. > Wenn du die Optimierung eingeschaltet hast würd ich mir für beide > Codeschnipsel die selbe Übersetzung erwarten. Da muß der Compiler aber hübsch optimieren, denn in der Variante 2 kann das LSB ungehindert auf 255 durch- und überlaufen. In der Variante 1 ist schon bei 98 Schluss... Hier mit Schalter -Os
Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|