Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| forth:fgforth:see [2018/02/13 16:00] – angelegt volkerp | forth:fgforth:see [2025/07/21 08:44] (aktuell) – volkerp | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | Decompiler | + | ====== |
| - | SEE ist ein kleiner Decompiler nach F83. | + | |
| + | **SEE** ist ein kleiner Decompiler nach F83. | ||
| Benutzung: | Benutzung: | ||
| Zeile 10: | Zeile 11: | ||
| Beispiel: | Beispiel: | ||
| < | < | ||
| + | : << | ||
| + | |||
| SEE << | SEE << | ||
| : << | : << | ||
| Zeile 26: | 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 31: | 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. | ||
| + | |||
| + | Er bindet sich automatisch in SEE ein. SEE zeigt dann auch Code-Worte an: | ||
| + | |||
| + | < | ||
| + | 1 GET REASS | ||
| + | 1 22 THRU | ||
| + | |||
| + | SEE COUNT | ||
| + | COUNT is | ||
| + | 0F70: POP HL | ||
| + | 0F71: LD E,(HL) | ||
| + | 0F72: LD D,00 | ||
| + | 0F74: INC HL | ||
| + | 0F75: EX DE,HL | ||
| + | 0F76: JP 0420 | ||
| + | 0F79: END | ||
| + | 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 | ||
| + | </ | ||