Virtuální procesor 2

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

Cílem je navrhnout abstraktní virtuální počítač, který by bylo možné jednoduše implementovat v dostupných jazycích a assemblerech. Důležitý prvek návrhu je použití abstraktních dynamických čísel bez horního omezení. Návrh by měl využívat principů lokality a relativních pozic, aby byly používány především malé číselné hodnoty. Samotná implementace může používat pro menší stroje pevnou velikost buňky a registrů jako např. 32-bit integer a může při požadavcích na větší čísla vyhlásit chybu. Nebo může pro větší čísla použít dynamickou paměťovou reprezentaci čísel pomocí různých implementací typu BigInteger.

  • Adresa paměti: dynamické celá čísla
  • Velikost paměťové buňky: dynamické celé číslo
  • Sdílená paměť kódu a dat


Značení parametrů instrukcí

  • Pn - číslo parametru (parameter)
  • En - entita (entity)
  • An - oblast (area)

Virtuální paměťové oblasti

Index Zkratka Význam
0 M Operační paměť
1 I I/O brány
2 R Uživatelské registry
3 S Systémové registry
4 P Paměť programu (pokud je oddělená od operační)

Systémové registry (oblast 3)

Index Význam
0 Program Counter (PC)

Mikroinstrukce

Symboly [] značí nepovinné parametry

Kód Zkatka Název Význam
0 NOP No Operation Žádná operace
1 HALT Program halt Zastaví vykonávání programu
2 CP p0, p1 Copy Kopíruje data ze zdrojové buňky do cílové p0 <= p1
3 ADD p0, [p1, [p2]] Addition Součet. Varianty: p0 <= p0 + 1, p0 <= p0 + p1, p0 <= p2 + p1
4 SUB p0, [p1, [p2]] Substraction Odečet. Varianty: p0 <= p0 - 1, p0 <= p0 - p1, p0 <= p2 - p1
5 MUL p0, p1, [p2] Multiplication Násobení. Varianty: p0 <= p0 * p1, p0 <= p2 * p1
6 DIV p0, p1, [p2], [p3] Division Dělení se zbytkem. Varianty: p0 <= p0 / p1, p0 <= p2 / p1, p0 p3(zbytek) <= p0 / p1, p0 p3(zbytek) <= p2 / p1
7 PCLR Parameters Clear Nuluje přednastavení všech parametrů, vybírá první parametr.
8 PSEL n Parameter Select Vybírá aktivní parametr
9 PSET n Parameter Set Nastavuje hodnotu vybraného parametru
10 PIND n Parameter Indirection Nastavuje parametr jako ukazatel do oblasti. Při opakovaném použití se cílová hodnota použije jako adresa do další paměti.
11 SKIP n Skip Next Instruction Přeskočí vykonání další instrukce pokud hodnota parametru je nulová
  • Bitové operace

Nejsou přímo podporovány díky dynamické povaze paměťových buněk. Posuny lze provádět v rámci hodnot buněk přímo pomocí operací DIV, MUL mocnin 2. Případně převést buňku na více menších dle bitových hodnot a provádět posuny přes více buněk.

  • Instrukce skoků

Jsou realizovány pomocí přímé kopie do registru PC. Absolutní skok: CP 0^S, LABEL Relativní skok: ADD 0^S, $ - LABEL

  • Zásobníkové operace

Pro účely registru SP(Stack Pointer) lze zvolit kterýkoliv uživatelský registr např. (SP = 16^R) Operace PUSH n: CP SP^M, n SUB SP

Operace POP n: ADD SP CP n, SP^M