Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
forth:fgforth:see [2018/02/13 16:00] – angelegt volkerpforth:fgforth:see [2020/01/07 08:08] (aktuell) volkerp
Zeile 1: Zeile 1:
-Decompiler+====== Decompiler ======
  
-SEE ist ein kleiner Decompiler nach F83.+ 
 +**SEE** ist ein kleiner Decompiler nach F83.
  
 Benutzung:   SEE name Benutzung:   SEE name
Zeile 10: Zeile 11:
 Beispiel: Beispiel:
 <code> <code>
 +: <<   OVER 0= NOT IF -1 SCROLL THEN ;
 +
 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 |
 +
 +<code>
 +IF +-- ?BRANCH m1        IF +---- ?BRANCH m1
 +...     |                         ...     |
 +THEN +-> m1:                         ELSE | +-- BRANCH m2
 +                                                +-|-> m1:
 +                                        ...   |
 +                                        THEN   +-> m2:
 +
 +
 +BEGIN +--> m1:          BEGIN +--> m1:
 +...     |                         ...     |
 +UNTIL +-- ?BRANCH m1                  AGAIN +-- BRANCH m1
 +
 +
 +BEGIN +---> m1:
 +...     |
 +WHILE | +-- ?BRANCH m2
 +...     | |
 +REPEAT  +-|-- BRANCH m1
 +          +-> m2:
 +</code>
 +
 +
 +
 +**REASS** ist ein zugehöriger Reassembler.
 +
 +Er bindest sich in SEE ein. SEE zeigt dann auch Code-Worte an:
 +
 +<code>
 +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
 +</code>
 +
 +
 +Durch Anpassen von (.PFA) kann die Ausgabe Forth-ähnlicher gestaltet werden. Allerdings ist es dann schwierig, Verzweigungen und Schleifen zu erkennen:
 +
 +<code>
 +DECOMPILER DEFINITIONS
 +: (.PFA)   >BODY   BEGIN  
 +      DUP @ ?SPECIAL SPECIAL DUP
 +      0= ?STOP OR UNTIL   DROP ;
 +' (.PFA) IS .PFA
 +</code>
  
  • forth/fgforth/see.1518537652.txt.gz
  • Zuletzt geändert: 2018/02/13 16:00
  • von volkerp