Forum: Compiler & IDEs Statemachines


von Peter D. (peda)


Lesenswert?

Ich hab jetzt mal nen komplexen Interrupthandler gebastelt.

Dabei habe ich 3 Sachen festgestellt:

1.
"default:" muß garnicht am Ende stehen

2.
Cases können auch innerhalb von if-Zweigen stehen, d.h. der Zweig wird
von einem Case nur unter einer Bedingung, vom anderen aber unbedingt
ausgeführt.

3.
Wenn man die Cases hübsch nacheinander plaziert, versucht der Compiler
das mit ner Sprungtabelle zu machen, muß dann aber auch noch die
Pointerregister pushen und poppen.

Wenn man aber Lücken läßt, merkt er, daß die Sprungtabelle zu groß wird
und machts mit Compare, was in meinem Fall kürzeren und weniger Code
erzeugte.


Auf die Idee zu 1. und 2. bin ich gekommen, weil ich mir vorher auf
Papier einen Plan gemacht hatte und dabei in andere States reinspringen
mußte.

Ich wollte aber kein goto verwenden und den Code auch nicht doppelt
schreiben (solchen Code vergißt man ja regelmäßig bei Änderungen).


Es ergibt sich quasi eine States-Schleife, die irgendwo in der Mitte
endet und dort steht dann auch der default-Fall.


Peter

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ja, klar.  Im Prinzip alles bekannt. ;-)

Gugele mal nach "Duff's device" und staune. :-)

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
Noch kein Account? Hier anmelden.