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?
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.
Das ist möglich. Warum bin ich bloß nicht selber darauf gekommen. Danke.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.