Benutzer-Werkzeuge

Webseiten-Werkzeuge


words:kernel_embedded:minimum_word_set

**Dies ist eine alte Version des Dokuments!**

Minimum Word Set

Wie viele Primitives braucht ein Forth, um es daran hochzuziehen? Erstaunlich wenige, wie man an Gforth EC sieht, das für fast jedes Primitiv eine High-Level-Definition bereitstellt. Aber Vorsicht! Wer zuviel weglässt, riskiert Zirkelschlüsse (Endlosschleifen).

Wir brauchen auf alle Fälle:

:dodoes als generalisierten Einstiegspunkt für alle High-Level-Definitionen, oder call für primitive-centric Implementierungen. @ und ! um auf den Speicher zuzugreifen. >R und R> damit auch auf dem Return-Stack etwas bewegt werden kann. + oder 2* für die Artihmetik. Und NAND als universellen Bit-Befehl. ?BRANCH oder 0= für Verzweigungen. Und schließlich ;S und EXECUTE für die Ausführung.

Alles andere lässt sich aus diesen Wörtern definieren, auch wenn man dafür dann temporäre Variablen braucht:

: lit'    r> @ ;
: cell    lit' [ 2 , ] ;   \ oder 4 oder 8 ...
: tmp1    lit' [ here cell+ , 0 , ] ;
: dup     tmp1 ! tmp1 @ tmp1 @ ;
: lit     r> dup cell + >r @ ;
words/kernel_embedded/minimum_word_set.1293642765.txt.gz · Zuletzt geändert: 2015-11-21 13:04 (Externe Bearbeitung)