mikrocontroller.net

Forum: Compiler & IDEs AVR - möglichst effiziente Verzweigung


Autor: Maxim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

abhängig von den zwei MSB eines Bytes soll gesprungen werden. Die 
Verzweigung muss möglichst schnell abgearbeitet werden.

REG0     | Sprungziel
----------------------
00xxxxxx | ROUT1
01xxxxxx | ROUT2
10xxxxxx | ROUT3
11xxxxxx | COMMAND

Die Wahrscheinlichkeit, dass ROUT1, 2 oder 3 auftreten ist gleich groß. 
COMMAND tritr im Vergleich dazu viel seltener auf.

Ich würde REG0 mit 11000000 UND-verknüpfen und dann mit CPI REG0, 
0/64/128 vergleichen und nach jedem Vergleich zu jeweiligem Sprunziel 
verzweigen.

Gibt es eine schnellere Variante?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm, was hat das jetzt mit dem GCC zu tun?

Abgesehen davon: Wenn Du Deine Sprungmarken im Speicher so verteilen 
kannst, dass Du die beiden MSB des Bytes als Adresse (plus Offset) 
verwenden kannst, dann wäre ein indirekter Sprung (ijmp) vielleicht eine 
Maßnahme.

Autor: Maxim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist möglich. Warum bin ich bloß nicht selber darauf gekommen.

Danke.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Musst dann eben nur schauen, dass Du die beiden Bits irgendwie mit dem 
Z-Pointer verfuddelst. Ob das im Einzelfall konkret schneller ist als 
eine (kurze) Kette von Vergleichen, müsste man ausprobieren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.