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 | ||
| + | </ | ||
| + | |||