Virtuální procesor 2: Porovnání verzí

Z ZděchovNET
Skočit na navigaci Skočit na vyhledávání
(Založena nová stránka: Značení parametrů instrukcí *Pn - číslo parametru (parameter) *En - entita (entity) *An - oblast (area) Virtuální paměťové oblasti {| class="wikitable" ! I…)
 
Bez shrnutí editace
Řádek 1: Řádek 1:
* Adresa paměti: dynamické celá čísla
* Velikost paměťové buňky: dynamické celé číslo
* Sdílená paměť kódu a dat




Řádek 8: Řádek 11:
Virtuální paměťové oblasti
Virtuální paměťové oblasti
{| class="wikitable"
{| class="wikitable"
! Index !! Význam
! Index !! Zkratka !! Význam
|-
|-
| 0 || Entity area (ER)
| 0 || M || Operační paměť
|-
|-
| 1 || Entity address (EA)
| 1 || I || I/O brány
|-
|-
| 2 || Program
| 2 || R || Uživatelské registry
|-
|-
| 3 || RAM
| 3 || S || Systémové registry
|-
|-
| 4 || P || Paměť programu (pokud je oddělená od operační)
| 4 || Registry
|-
| 5 || I/O
|-
| 6 || Zásobník
|}
|}


Systémové registry (oblast 3)
Entity
{| class="wikitable"
{| class="wikitable"
! Index !! Význam
! Index !! Význam
|-
|-
| 0 || Program Counter (PC)
| 0 || Program Counter (PC)
|}

=Mikroinstrukce=

Symboly [] značí nepovinné parametry

{| class="wikitable"
! Opkód !! Název !! Význam
|-
|-
| NOP || No Operation || Žádná operace
| 1 || Entity Area Pointer (ERP)
|-
|-
| HALT || Program halt || Zastaví vykonávání programu
| 2 || Entity Address Pointer (EAP)
|-
|-
| CP p0, p1 || Copy || Kopíruje data ze zdrojové buňky do cílové p0 <= p1
| 3 || Stack Pointer (SP)
|-
|-
| ADD p0, [p1, [p2]] || Addition || Součet. Varianty: p0 <= p0 + 1, p0 <= p0 + p1, p0 <= p2 + p1
| 4 ||
|-
|-
| SUB p0, [p1, [p2]] || Addition || 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
|-
| 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
|-
| PCLR || Parameters Clear || Nuluje přednastavení všech parametrů, vybírá první parametr.
|-
| PSEL n || Parameter Select || Vybírá aktivní parametr
|-
| PSET n || Parameter Set || Nastavuje hodnotu vybraného parametru
|-
| 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.
|-
| SKIP n || Skip Next Instruction || Přeskočí vykonání další instrukce pokud hodnota parametru je nulová
|}
|}


* Bitové operace
=Mikroinstrukce=
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.
==PUSH==
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ů
<pre>
Jsou realizovány pomocí přímé kopie do registru PC.
LD SP, P0
Absolutní skok: CP 0^S, LABEL
LDC EAP, SP
Relativní skok: ADD 0^S, $ - LABEL
INC EAP
* Zásobníkové operace
</pre>
Pro účely registru SP(Stack Pointer) lze zvolit kterýkoliv uživatelský registr např. (SP = 16^R)

Operace PUSH n:
==POP==
CP SP^M, n

SUB SP
<pre>
LDC EAP, SP
DEC EAP
LD P0, SP
</pre>


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


<pre>
LDC EAP, PC
LD EAP, P0
</pre>


[[Kategorie:Programování]]
[[Kategorie:Programování]]

Verze z 20. 12. 2014, 22:18

  • 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

Opkód Název Význam
NOP No Operation Žádná operace
HALT Program halt Zastaví vykonávání programu
CP p0, p1 Copy Kopíruje data ze zdrojové buňky do cílové p0 <= p1
ADD p0, [p1, [p2]] Addition Součet. Varianty: p0 <= p0 + 1, p0 <= p0 + p1, p0 <= p2 + p1
SUB p0, [p1, [p2]] Addition Odečet. Varianty: p0 <= p0 - 1, p0 <= p0 - p1, p0 <= p2 - p1
MUL p0, p1, [p2] Multiplication Násobení. Varianty: p0 <= p0 * p1, p0 <= p2 * p1
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
PCLR Parameters Clear Nuluje přednastavení všech parametrů, vybírá první parametr.
PSEL n Parameter Select Vybírá aktivní parametr
PSET n Parameter Set Nastavuje hodnotu vybraného parametru
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.
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