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

Z ZděchovNET
Skočit na navigaci Skočit na vyhledávání
(Založena nová stránka: ==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 bl…)
 
Bez shrnutí editace
Řádek 9: Řádek 9:


* Aritmetické
* Aritmetické
** ADD DEST, OP1, OP2
ADD
** SUB DEST, OP1, OP2
SUB
** MUL DEST, OP1, OP2
MUL
** DIV DEST, OP1, OP2
DIV
** MOD DEST, OP1, OP2
MOD
* Logické
* Logické


* Bitové
* Bitové
** SHL DEST, SOURCE
SHL
** SHR DEST, SOURCE
SHR
** OR DEST, OP1, OP2
OR
** AND DEST, OP1, OP2
AND
** XOR DEST, OP1, OP2
XOR
* Řízení běhu
* Řízení běhu
NOP - žádná operace
** NOP - žádná operace
** JP ADDR
JP
** JR ADDR
* Zásobník
* Zásobník
registr SP
registr SP
PUSH - vloží data na zásobník
** PUSH SOURCE - vloží data na zásobník
POP - načte data ze zásobníku
** POP DEST - načte data ze zásobníku
CALL
** CALL
RET
** RET
* Přesuny
* Přesuny
COPY - kopíruje data
** COPY DEST, SOURCE - kopíruje data
XCH - vymění data
** EX OP1, OP2 - vymění data
** CMP OP1, OP2 - porovnání bloků
CMP
** REV DEST, SOURCE - převrací pořadí bajtů v bloku
* Vnější zařízení
* Vnější zařízení
IN - načte data ze vstupu
** IN PORT, DEST - načte data ze vstupu
OUT - zapíše data na výstup
** OUT PORT, SOURCE - zapíše data na výstup


==Příklady==
==Příklady==
Řádek 45: Řádek 45:
! Kód !! Popis
! Kód !! Popis
|-
|-
|<pre>COPY (DEST):10, (SOURCE):10</pre> || Kopie bloku 10 bajtů
| <pre>COPY (DEST):10, (SOURCE):10</pre> || Kopie bloku 10 bajtů
|-
|-
| <pre>COPY (DEST):10, (SOURCE):2</pre> || Kopie bloku 2 bajtů do bloku 10 bajtů, blok 2 bajtů se opakuje
| <pre>COPY (DEST):10, (SOURCE):2</pre> || Kopie bloku 2 bajtů do bloku 10 bajtů, blok 2 bajtů se opakuje
Řádek 54: Řádek 54:
|-
|-
| <pre>ADD (DEST):10, 1:10</pre> || Přičtení hodnoty 1 do prvního bajtu v cílovém bloku
| <pre>ADD (DEST):10, 1:10</pre> || Přičtení hodnoty 1 do prvního bajtu v cílovém bloku
|-
| <pre>SHR (DEST):10, (SOURCE):10</pre> || 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:
<pre>
LOOP: LDI
DEC BC
JR NC, LOOP
</pre>
nebo
<pre>
LOOP: LD A, (HL)
LD (DE), A
INC HL
INC DE
DEC BC
JR NC, LOOP
</pre>

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.

Verze z 16. 5. 2012, 09:18

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.