7.2. Implementace slovníku

7.2.1. Nepřímo zřetězený kód (Indirect Threaded Code)
7.2.2. Přímo zřetězený kód (Direct Threaded Code)
7.2.3. Podprogramy zřetězený kód (Subroutine Threaded Code)
7.2.4. Tokeny zřetězený kód (TTC — Token Threaded Code)
7.2.5. Huffman threading
7.2.6. Rozdělený slovník

section

rcsinfo="$Header: /home/radek/cvs/forth-book/sec-dictionary_implementation.xml,v 1.5 2005/10/21 13:36:02 radek Exp $"

Odkazy a zdroje:

Základním kritériem podle kterého posuzujeme danou implementaci forthu je způsob implementace (organizace) slovníku slov. Rozeznáváme čtyři základní modely:

Tyto základní modely si dále popíšeme. Mimo ně existuje ještě řada, ne tolik významných modelů, či jejich modifikací. Zde uvedu aspoň jejich výčet, tak jak jsem je našel na Internetu, bez dalšího popisu.

Historicky nejstarším a původním modelem je nepřímo zřetezený kód. Jeho pochopení je důležité pro pochopení ostatních modelů ktere z něj vycházejí a různým způsobem rozšiřují.

Slovník sestává ze záznamů / definic jednotlivých slov. Tyto jsou za sebou lineárně uloženy v paměti. Jednotlivá slova mají dvě základní části: tělo a hlavičku.

+----------+----------+
| Hlavička |   Tělo   |
+----------+----------+

Hlavička obsahuje jméno slova, jeden bajt s přiznaky a velikostí jména a jeden ukazatel na předchozí slovo ve slovníku. Tento ukazatel slouží k vyhledání počátku předcházejícího slova jenž by jinak nebylo možno nalézti postupujeme-li od posledně definovaného slova ke slovům dříve definovaným až slovům základním.

+-----+------+-------+
| flg | link | jméno |
+-----+------+-------+

Bajt příznaků flg obsahuje ve spodních bitech délku jména a horní bity jsou příznaky se speciálním významem. Bit b7 bývá 1. Následující hodnota má velikost ukazatele paměti, a ukazuje na předchozí slovo ve slovníku. Přesněji na jeho tělo, začátek těla. Za ní následuje jméno slova v 7-bit ASCII kódování. Poslední písmeno má nastaven sedmý bit na 1.

Tělo pak obsahuje některé z následujících polí:

CFA Code Field Address
Adresa strojového kódu. Toto pole obsahuje spojovací adresu jenž ukazuje na strojový kód slova. V případě nízkoúrovňových slov které mají stroový kód v poli PF ukazuje na toto pole, v případě vysokoúrovňových slov ukazuje na vstupní bod interpretu ENTRY.
PF Parameter Field
Pole parametrů, obsahuje strojový kód slova v případě nízkoúrovňových slov, nebo adresy slov v případě vysokoúrovňových slov.