Virtuální procesor

Z ZděchovNET
Skočit na navigaci Skočit na vyhledávání

Koncept

  • Je použit lineárně adresovatelný paměťový prostor, každý buňka je velikosti Bajt
  • U všech operací, kde je to žádoucí, jsou podporovány blokové operace
  • Instrukce mají až dva parametry a každý z nich může být definován jako blok (adresa + délka) nebo hodnota
  • U každého bloku může být definováno zda inkrementovat vzestupně nebo sestupně

Instrukční sada

  • Aritmetické
    • ADD DEST, OP1, OP2
    • SUB DEST, OP1, OP2
    • MUL DEST, OP1, OP2
    • DIV DEST, OP1, OP2
    • MOD DEST, OP1, OP2
  • Logické
  • Bitové
    • SHL DEST, SOURCE
    • SHR DEST, SOURCE
    • OR DEST, OP1, OP2
    • AND DEST, OP1, OP2
    • XOR DEST, OP1, OP2
  • Řízení běhu
    • NOP - žádná operace
    • JP ADDR
    • JR ADDR
  • Zásobník

registr SP

    • PUSH SOURCE - vloží data na zásobník
    • POP DEST - načte data ze zásobníku
    • CALL
    • RET
  • Přesuny
    • COPY DEST, SOURCE - kopíruje data
    • EX OP1, OP2 - vymění data
    • CMP OP1, OP2 - porovnání bloků
    • REV DEST, SOURCE - převrací pořadí bajtů v bloku
  • Vnější zařízení
    • IN PORT, DEST - načte data ze vstupu
    • OUT PORT, SOURCE - zapíše data na výstup

Příklady

Kód Popis
COPY (DEST):10, (SOURCE):10
Kopie bloku 10 bajtů
COPY (DEST):10, (SOURCE):2
Kopie bloku 2 bajtů do bloku 10 bajtů, blok 2 bajtů se opakuje
COPY (DEST):10, 1
Nastavení bloku 10 bajtů na hodnotu 1
ADD (DEST):10, 1
Přičtení hodnoty 1 do jednotlivých bajtů v bloku 10 bajtů
ADD (DEST):10, 1:10
Přičtení hodnoty 1 do prvního bajtu v cílovém bloku
SHR (DEST):10, (SOURCE):10
Bitový posun bloku SOURCE doprava a zápis výsledku do bloku DEST

Inspirace

Inspirováno instrukční sadou CPU Z80 a blokovými instrukcemi LDIR, LDDR, INIR, INDR, OTID, OTDR, CPIR, CPDR. Tyto instrukce umožňovaly efektivnější vykonávání blokových operací.

Například instrukci LDIR lze zapsat jako:

LOOP:  LDI
       DEC  BC
       JR   NC, LOOP

nebo

LOOP:  LD   A, (HL)
       LD   (DE), A
       INC  HL
       INC  DE
       DEC  BC
       JR   NC, LOOP

Tento systém lze rozšířit mimo LD, IN, OUT, CP i na další instrukce jako AND, OR, XOR, EX, SHL, SHR, INC, DEC, ADD, SUB, aj.