7.2.4. Tokeny zřetězený kód (TTC — Token Threaded Code)

$Header: /home/radek/cvs/forth-book/sec-token_threaded_code.xml,v 1.4 2005/01/30 09:48:12 radek Exp $

section id="token-threaded-code" xreflabel="Tokeny zřetězený kód"

Tento model nepoužívá v definicích přímé adresy ale tak zvané tokeny. Tokeny jsou indexy do tabulky tokenů kde je ke každému tokenu přiřazena adresa. Motivací pro tento model je snížení paměťových nároků a tím větší hustota kódu.

Pro představu, použijeme-li tokeny 8 bitů veliké, tak při realizaci 16-ti bitového forthu snížíme průměrnou velikost definice slova na polovinu oproti použití přímých adres. Nevýhodou je pak omezení maximálního počtu definovaných slov na 256 a snížení rychlosti interpretace způsobené jednou dereferencí navíc.

Omezení dané velikostí tokenu (8 bitů) lze obejít. Pokud se například slovník forthu nachází v horní polovině adresního prostoru (od adresy 0x8000), zavedeme jen 128 tokenů. Ty budou zapisovány jako hodnoty od 0 do 127. Bude-li načtena v průběhu vakonávání slova hodnota tokenu vetší než 128, tedy od 128 do 255, znamená to že se nejedná o token ale horní část adresy slova ve slovníku. Tím budeme mít k dispozici nejen 128 tokenů, ale taky prostor pro libovolné množství dalších slov dle paměťových možností našeho počítače.

Následující tabulka popisuje velikost prostoru pro přímo adresovaný slovník a maximální počet použitelných tokenů. Hodnoty jsou pro 8-mi bitové tokeny a procesor s 16-ti bitovou adresou, tedy pro bežný 8-mi bitový procesor.

tokeny [n]slovník [KiB]poznámka
3256KiB 
6448Kibpotřebujeme-li veliký prostor pro slovník
12832KiB 
19216KiBvystačíme-li si z malým slovníkem
2248KiBextrémě malý prostor pro slovník

K tabulce je třeba dodat, že velikostí slovníku se rozumí velikost přímo adresovatelného slovníku. Do této velikosti se nepočítá velikost slovníku adresovatelného tokeny.