Taktzyklen >> << AVR

#635868
Lesenswert?
• ▲
▼
irgendwas zwischen 0 und unendlich.

0 Taktzyklen wenn der Compiler das statisch ausrechnen kann und einfach 
nur eine Konstante einsetzt, unendlich bei einem fehlerhaft überladenen 
operator...

Dazwischen gibts viele Sonderfälle, z.B. beim shiften eines 32Bit wertes 
um 8 bits kann der Compiler einfach die Register "umbenennen"...

Wenns auf Taktzyklen genauen code ankommt, in Assembler programmieren, 
sonst klappts bei der nächsten GCC version mit geändertem Optimierer eh 
nichtmehr.

/Ernst
Gast #636035
Lesenswert?
• ▲
▼
>Unsigned 32 bit shift 9  bedeutet 1 byte nullen, 3 byte umkopieren und
>jeweils je um eins schieben.

Völlig korrekt Seph. Problematisch wirds wenn statt einer konstanten 9 
eine
Variable mit Wert 9 verwendet wird. Dann kann der Compiler nix mehr
optimieren. Dann wird wirklich 9 mal über 4 Bytes geschoben. Wie lange
ein Shifting dauert hängt extrem vom Quellcode ab.
Gast #636063
Lesenswert?
• ▲
▼
Das erste sollte (deshalb kann man sich die .lss-Files anschauen) zu
    swap value
    andi value, 0xF0
werden, d.h. zwei takte
das andere wird zu einer schleife, à la (vorsicht, pseudocode)
shift:
    lsl value
    dec n
    brne shift
Also mindestens 3 Takte, ABER n muss vorher noch auf 0 überprüft werden, 
also nochmal  + 2 (oder 3 ?) Takte.
Maximal (sinnvoll) wäre 4*7, (möglich) wäre 4*255 - das wäre aber schon 
ein Programmfehler - oder man muss auf n <= 7 überprüfen (wieder 2 bis 3 
Befehle/Takte).
Also schnapp dir deinen Compiler, dein passendes AVR-Datasheet und das 
"AVR Instruction Set" (noch ein PDF von Atmel) und find's selber raus ;)

hth. Jörg

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.