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 [2025/07/21 08:44] (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. | ||
- | Er bindest | + | Er bindet |
< | < | ||
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 | ||
+ | </ | ||
+ |