8.1.7. Vykonání slova (EXECUTE)

section id="ff1802.execute" xreflabel="EXECUTE", xref.ff1802.execute, link.ff1802.EXE

Protože interpret slov je již definován jako slovo FORTHu, má hlavičku jenž pedchází tělu. Tato hlavička definuje název slova EXECUTE, ukazatel na předchozí slovo ve slovníku, což je v našem případě slovo LIT a ukazatel na strojový kód jenž ukazuje do vlastního těla EXECUTE jenž v poli PF obsahuje strojový kód.

000246 009C                          ; EXECUTE
000247 009C 87455845435554C5         .DB H'87,"EXECUT",H'C5; EXECUTE
000248 00A4 0080                     .DW LIT-6    ; link to previous word "LIT"
000249 00A6 00A8             EXE:    .DW *+2; CFA→PF containg machine code

Nyní již samotný kód slova. První část vyzvedne ze zásobníku parametrů (PSP) adresu slova a uloží ji do pomocného registru W.

                                     ; LOAD W FROM STACK
                                     ; (psp+)→w
000250 00A8 49                       LDA R9
000251 00A9 BB                       PHI RB
000252 00AA 09                       LDN R9          ; LOAD W FROM STACK
000253 00AB AB                       PLO RB

Druhá část kódu opraví stav zásobníku. V důsledku použítí jedné instrukce LDA a druhé LDN se PSP zvětší o jedničku. O tuto jedničku jej opravíme první instrukcí DEC a druhé dvě instrukce se posunou na předchozí buňku. Tímto efektivně odstraníme adresu ze zásobníku.

000254 00AC 29                       DEC R9
000255 00AD 29                       DEC R9
000256 00AE 29                       DEC R9

Následuje spuštění vnitřního interpretu. Tento se ovšem spouští od adresy WBR. Abychom toho dosáhli, musíme opravit ukazatel instrukcí v RB tak že jej z NEXT posuneme o čtyřy bajty na WBR.

                                     ; advance RC to point to WBR
000257 00AF 1C                       INC RC
000258 00B0 1C                       INC RC
000259 00B1 1C                       INC RC          ; POINT TO WBR
000260 00B2 1C                       INC RC
000261 00B3 DC                       SEP RC          ; next