(token = engl. für Zeichen, Marke)
Der hierbei hintereinander aufgereihte Code besteht aus Zeichen die für eine Aktion stehen. Es sind symbolische Angaben darüber was zu geschehen hat. Typischerweise wird die CFA eines Forth-Wortes als token eingetragen. (CFA = Code Field Address)
Da hierbei Bytes aneinander gereiht werden, die selbst gar nichts mehr mit dem Maschinencode der ausführenden Maschine zu tun haben, heißt diese Codeform auch Byte-Code.
Gegeben sei die Forth Definition:
: name word1 word2 word3 ;
Token threaded code hat folgende Struktur:
header with name | token of NEST | token of word1 | token of word2 | token of word3 | token of EXIT |
Die Einsprungstelle NEST sogt dafür, das der Reihe nach Word1, Word2 und Word3 ausgeführt werden. Abgeschlossen wird die Sequenz durch EXIT, wodurch die Kontrolle wieder an das aufrufende Wort zurück gegeben wird. EXIT führt zu NEXT, dem Inner Interpreter.
Der Inner Interpreter für Token Threaded Code sieht so aus (pseudo-code):
Next T <- (IP) IP++ W <- TokenTable[T] JMP (W)
„Bytecode“ kann auf ARM7 Controllern nützlich sein, also wenn eine CPU zwar ein Speicherfresser ist, der aber eine hoher Rechenleistung aufweist. Ein Compiler würde dort alternativ JSR-threaded für normale Programmteile und Bytecode für zeitunkritische Programmteile (d.h. der Compiler selbst) erzeugen. Beide greifen auf einen identischen Nucleus zu.
MfG JRD