Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | Letzte ÜberarbeitungBeide Seiten der Revision | ||
forth:fgforth:see [2019/03/14 16:13] – volkerp | forth:fgforth:see [2020/01/06 14:18] – volkerp | ||
---|---|---|---|
Zeile 34: | Zeile 34: | ||
| m1: .. ?BRANCH m2 .. BRANCH m1 m2: | BEGIN .. WHILE .. REPEAT | | | m1: .. ?BRANCH m2 .. BRANCH m1 m2: | BEGIN .. WHILE .. REPEAT | | ||
| m1: .. BRANCH m1 | BEGIN .. AGAIN | | | m1: .. BRANCH m1 | BEGIN .. AGAIN | | ||
+ | |||
+ | < | ||
+ | IF +-- ?BRANCH m1 | ||
+ | ... | ||
+ | THEN +-> m1: | ||
+ | +-|-> m1: | ||
+ | ... | | ||
+ | THEN +-> m2: | ||
+ | |||
+ | |||
+ | BEGIN +--> | ||
+ | ... | ||
+ | UNTIL +-- ?BRANCH m1 AGAIN +-- BRANCH m1 | ||
+ | |||
+ | |||
+ | BEGIN +---> | ||
+ | ... | | ||
+ | WHILE | +-- ?BRANCH m2 | ||
+ | ... | | | ||
+ | REPEAT | ||
+ | +-> m2: | ||
+ | </ | ||
+ | |||
+ | |||
**REASS** ist ein zugehöriger Reassembler. | **REASS** ist ein zugehöriger Reassembler. | ||
Zeile 54: | Zeile 78: | ||
ok | ok | ||
</ | </ | ||
+ | |||
+ | |||
+ | Durch Anpassen von (.PFA) kann die Ausgabe Forth-ähnlicher gestaltet werden. Allerdings ist es dann schwierig, Verzweigungen und Schleifen zu erkennen: | ||
+ | |||
+ | < | ||
+ | DECOMPILER DEFINITIONS | ||
+ | : (.PFA) | ||
+ | DUP @ ?SPECIAL SPECIAL DUP | ||
+ | 0= ?STOP OR UNTIL DROP ; | ||
+ | ' (.PFA) IS .PFA | ||
+ | </ | ||
+ |