Decompiler

SEE ist ein kleiner Decompiler nach F83.

Benutzung: SEE name

Er erzeugt ein Listing des Forth-Quellcodes. Bekannte CREATE-Strukturen werden korrekt entschlüsselt (Konstanten, Variablen, Colon-Definitionen etc.).

Beispiel:

: << OVER 0= NOT IF -1 SCROLL THEN ;
SEE << 
: << 
3121 OVER 
3123 0= 
3125 NOT 
3127 ?BRANCH 3131 
312B (LIT) -1 ( FFFF )
312F SCROLL 
3131 ;ok

Rückübersetzung:

(LIT) entfällt
;ok ;
(DO) .. (LOOP) DO .. LOOP
(?LEAVE) ?LEAVE
?BRANCH m1 .. m1: IF .. THEN
?BRANCH m1 .. BRANCH m2 m1: ... m2: IF .. ELSE .. THEN
m1: .. ?BRANCH m1 BEGIN .. UNTIL
m1: .. ?BRANCH m2 .. BRANCH m1 m2: BEGIN .. WHILE .. REPEAT
m1: .. BRANCH m1 BEGIN .. AGAIN
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:

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) >BODY BEGIN 
 DUP @ ?SPECIAL SPECIAL DUP
 0= ?STOP OR UNTIL DROP ;
' (.PFA) IS .PFA
  • forth/fgforth/see.txt
  • Zuletzt geändert: 2025年07月21日 08:44
  • von volkerp
Anmelden