7.1. Virtuální procesor

7.1.1. Registry virtuálního procesoru
7.1.2. Instrukce

section id="virtual-processor" xreflabel="Virtuální procesor"

rcsinfo="$Header: /home/radek/cvs/forth-book/ch-implementace.xml,v 1.15 2005/11/09 23:11:35 radek Exp $"

Vysvětlovat si jak funguje Forth „zevnitř“ tak, abychom pochopili a poté implementovali Forth pro reálný procesor, je bez toho reálného procesoru velmi těžké. Proto k popisu fungování Forthu použiji virtuální procesor, jak se v literatuře používá.

To be done:Doplnit odkazy na virtuální procesor.

Náš virtuální procesor FIXME:(von Neumanovy architektury|udělat odkaz např do Wikipedie) obsahuje sadu vnitřních registrů, a má spojení s pamětí (RAM/ROM) obsahující oba zásobníky a slovník.

Obrázek 7.1. Virtuální počítač

 +-------------------+
 !                   !
 !  P R O C E S O R  !
 !                   !
 !  registry         !
 +-------------------+
           ↑
           |  adresa a data
           ↓
 +-------------------+
 |                   |
 |     P A M Ě Ť     |
 |                   |
 +-------------------+

Pro jednoduchost o našem virtuálním procesoru nemáme příliš mnoho předpokladů. Předpokládáme pouze:

Vysvětlovat jak Forth funguje uvnitř, jak je implementován, je bez ukázky (praktického příkladu) na konkrétním procesoru téměř nemožné. Proto byl vytvořen model procesoru, virtuální procesor, jenž je k tomuto popisu vhodný a je základem implementace na skutečné procesory.

FIXME:Vysvětlovat jak forth funguje, bez ukázky na konkrétním procesoru je téměř nemožné. Proto vznikl v průběhu času virtuální forth procesor. Je to myšlený stroj který je dostatečně blízko běžnému hardwéru a přitom dostatečně obecný. Na něm ukážeme funkčnost forthu a tento virtuální procesor také bývá základem konkrétní implementace.

FIXME:Na tomto stroji si ukážeme ?funkčnost? forthu a později jej použijeme při implemetacích na konkrétní, skutečné procesory.

FIXME:Model FORTHu obsahuje řadu registrů, jejichž výčet je uveden dále. Tyto tvoří virtuální procesor. V praxi, při realizaci jádra FORTHu na konkrétním procesoru pak přidělíme funkci jednotlivých virtuálních registrů skutečným registrům použitého procesoru a popíšeme implementaci základních operací instrukcemi tohoto použitého procesoru.

FIXME:Abychom se domluvili, definujeme si předem několik pojmů. Zásobníky jenž procesor používá na/pro ukládání hodnot velikosti buňky (CELL). Tato velikost je volena s ohledem na zpracovávané údaje a velikost adresního prostoru.

FIXME:Tedy … protože velikost buňky != byte, je třeba ji znát. Konstanta CELL tedy bude dále označovat počet bytů/slabik ze kterých se buňka skládá.

Jednotlivé virtuální registry jsou tak veliké, aby se do nich vešla jedna buňka. To u 16-ti bitového FORTHu znamená 16-ti bitové registry, a u 32-bitového 32-bitové registry. To je třeba mít na zřeteli při přidělování funkcí těchto registrů skutečným registrům.

REMOVE: Abychom si mohli názorně a jednoduše vysvětlit princip Forthu, potřebujeme k tomu procesor na kterém jej předvedeme. Pro tyto účely si zavedeme „virtuální procesor“ jehož struktura, orientovaná na forth, je natolik jednoduchá, že nás nebude zatěžovat specifickými detaily.