Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
forth:fgforth:see [2019/03/14 16:13] – volkerp | forth:fgforth:see [2020/01/07 08:08] (aktuell) – volkerp | ||
---|---|---|---|
Zeile 29: | Zeile 29: | ||
| ;ok | ; | | | ;ok | ; | | ||
| (DO) .. (LOOP) | DO .. LOOP | | | (DO) .. (LOOP) | DO .. LOOP | | ||
+ | | (?LEAVE) | ?LEAVE | | ||
| ?BRANCH m1 .. m1: | IF .. THEN | | | ?BRANCH m1 .. m1: | IF .. THEN | | ||
| ?BRANCH m1 .. BRANCH m2 m1: ... m2: | IF .. ELSE .. THEN | | | ?BRANCH m1 .. BRANCH m2 m1: ... m2: | IF .. ELSE .. THEN | | ||
Zeile 34: | Zeile 35: | ||
| 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 79: | ||
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 | ||
+ | </ | ||
+ |