Virtualní procesor 4: Porovnání verzí
Skočit na navigaci
Skočit na vyhledávání
Smazaný obsah Přidaný obsah
Bez shrnutí editace |
Bez shrnutí editace |
||
| Řádek 1: | Řádek 1: | ||
=Motivace= |
|||
| ⚫ | |||
| ⚫ | |||
* Obecná instrukční sada, aby mohl jeden program běžet na mnoha různých procesorech a systémech. |
|||
* Instrukční sada podporující rovnocenně různé datové šířky. Aby pro malé hodnoty se použil jen nejmenší vhodný typ a ne největší nativní. (např. procenta = bajt) Cílem je umožnit efektivní překlad a běh na starších 8-bit a 16-bit počítačích, ale také na novějších 128-bit nebo 256-bit. |
|||
* Instrukční sada by měla být jednoduchá a co nejmenší, aby bylo možné snadno sestavit interpretr a překladač. |
|||
=Datové typy= |
|||
| ⚫ | |||
| ⚫ | |||
* Datové typy |
* Datové typy |
||
** Logická (bitová) hodnota |
|||
** Celé číslo |
** Celé číslo |
||
** Záporné číslo |
** Záporné číslo |
||
** Desetinné číslo |
** Desetinné číslo |
||
=Instrukční sada= |
|||
Rx - registr, kódováno pomocí indexu a šířky |
Rx - registr, kódováno pomocí indexu a šířky |
||
| Řádek 15: | Řádek 26: | ||
|- |
|- |
||
| Store to memory || STM [Rx], Ry || |
| Store to memory || STM [Rx], Ry || |
||
|- |
|||
| Load from indexed memory || LDMI Rx, [Ry + Rz] || |
|||
|- |
|||
| Store to indexed memory || STMI [Rx + Ry], Rz || |
|||
|- |
|- |
||
| Load system register || LDS Rx, Sx || |
| Load system register || LDS Rx, Sx || |
||
| Řádek 33: | Řádek 48: | ||
|- |
|- |
||
| Or || OR Rx, Ry || |
| Or || OR Rx, Ry || |
||
|- |
|||
| Not || NOT Rx || Negace všech bitů podobně jako XOR Rx, $ffff |
|||
|- |
|- |
||
| No operation || NOP || |
| No operation || NOP || |
||
|- |
|||
| Halt || HALT || |
|||
|- |
|- |
||
| Increment || INC Rx || |
| Increment || INC Rx || |
||
| Řádek 42: | Řádek 61: | ||
| Jump || JP Rx || |
| Jump || JP Rx || |
||
|- |
|- |
||
| Jump |
| Jump if not zero || JPNZ Rx, Ry || |
||
|- |
|- |
||
| Jump relative || JR Rx || |
| Jump relative || JR Rx || |
||
|- |
|- |
||
| Jump relative |
| Jump relative if not zero || JRNZ Rx, Ry || |
||
|- |
|- |
||
| Call subroutine || CALL Rx || |
| Call subroutine || CALL Rx || |
||
|- |
|- |
||
| Call subroutine |
| Call subroutine if not zero || CALLNZ Rx, Ry || |
||
|- |
|- |
||
| Call subroutine relative || CALLR Rx || |
| Call subroutine relative || CALLR Rx || |
||
|- |
|- |
||
| Call subroutine relative |
| Call subroutine relative if not zero || CALLRNZ flag,Rx || |
||
|- |
|- |
||
| Return from subroutine || RET || |
| Return from subroutine || RET || |
||
|- |
|- |
||
| Return from subroutine |
| Return from subroutine if not zero || RETNZ Rx || |
||
|- |
|- |
||
| Push to stack || PUSH Rx || |
| Push to stack || PUSH Rx || |
||
| Řádek 64: | Řádek 83: | ||
| Pop from stack || POP Rx || |
| Pop from stack || POP Rx || |
||
|- |
|- |
||
| Addition || ADD Rx, Ry || |
| Addition || ADD Rx, Ry || |
||
|- |
|||
| Addition with carry || ADDC Rx, Ry, Rz || Bit z Rz se přičte a nastaví se do něj carry výsledku |
|||
|- |
|||
| Substraction || SUB Rx, Ry || |
|||
|- |
|- |
||
| Substraction || |
| Substraction with carry || SUBC Rx, Ry, Rz || Bit z Rz se přičte a nastaví se do něj carry výsledku |
||
|- |
|- |
||
| Multiplication || MUL Rx, Ry || |
| Multiplication || MUL Rx, Ry || |
||
| Řádek 82: | Řádek 105: | ||
| Reset bit || RES Rx, Ry || |
| Reset bit || RES Rx, Ry || |
||
|- |
|- |
||
| Test bit || BIT Rx, Ry || |
| Test bit || BIT Rx, Rx, Ry || |
||
|- |
|||
| Assign bit || ASB Rx, Ry, Rx || |
|||
|} |
|} |
||
Verze z 23. 1. 2016, 09:11
Motivace
- Obecná instrukční sada, aby mohl jeden program běžet na mnoha různých procesorech a systémech.
- Instrukční sada podporující rovnocenně různé datové šířky. Aby pro malé hodnoty se použil jen nejmenší vhodný typ a ne největší nativní. (např. procenta = bajt) Cílem je umožnit efektivní překlad a běh na starších 8-bit a 16-bit počítačích, ale také na novějších 128-bit nebo 256-bit.
- Instrukční sada by měla být jednoduchá a co nejmenší, aby bylo možné snadno sestavit interpretr a překladač.
Datové typy
- Index registru: číslo kódované jako 4-bit dynamické, 0 - konstanta, 1 - R1, 2 - R2, 3 - R3, 4 - R4, 5 - R5, 6 - R6, 7 - R7, ...
- Šířka registru: číslo kódované jako 4-bit dynamické, 0 - 1-bit, 1 - 8-bit, 2 - 16-bit, 3 - 32-bit, 4 - 64-bit, 5 - 128-bit, 6 - 256-bit, 7 - 512-bit, ...
- Datové typy
- Logická (bitová) hodnota
- Celé číslo
- Záporné číslo
- Desetinné číslo
Instrukční sada
Rx - registr, kódováno pomocí indexu a šířky
| Název | Zápis | Poznámka |
|---|---|---|
| Copy | COPY Rx, Ry | |
| Load from memory | LDM Rx, [Ry] | |
| Store to memory | STM [Rx], Ry | |
| Load from indexed memory | LDMI Rx, [Ry + Rz] | |
| Store to indexed memory | STMI [Rx + Ry], Rz | |
| Load system register | LDS Rx, Sx | |
| Store system register | STS Sx, Rx | |
| Clear | CLR Rx | |
| Exchange | XCHG Rx, Ry | při různých šířkách? |
| Input | IN Rx, [Ry] | |
| Output | OUT [Rx], Ry | |
| Xor | XOR Rx, Ry | |
| And | AND Rx, Ry | |
| Or | OR Rx, Ry | |
| Not | NOT Rx | Negace všech bitů podobně jako XOR Rx, $ffff |
| No operation | NOP | |
| Halt | HALT | |
| Increment | INC Rx | |
| Decrement | DEC Rx | |
| Jump | JP Rx | |
| Jump if not zero | JPNZ Rx, Ry | |
| Jump relative | JR Rx | |
| Jump relative if not zero | JRNZ Rx, Ry | |
| Call subroutine | CALL Rx | |
| Call subroutine if not zero | CALLNZ Rx, Ry | |
| Call subroutine relative | CALLR Rx | |
| Call subroutine relative if not zero | CALLRNZ flag,Rx | |
| Return from subroutine | RET | |
| Return from subroutine if not zero | RETNZ Rx | |
| Push to stack | PUSH Rx | |
| Pop from stack | POP Rx | |
| Addition | ADD Rx, Ry | |
| Addition with carry | ADDC Rx, Ry, Rz | Bit z Rz se přičte a nastaví se do něj carry výsledku |
| Substraction | SUB Rx, Ry | |
| Substraction with carry | SUBC Rx, Ry, Rz | Bit z Rz se přičte a nastaví se do něj carry výsledku |
| Multiplication | MUL Rx, Ry | |
| Division | DIV Rx, Ry | |
| Shift left | SHL Rx, Ry | |
| Shift right | SHR Rx, Ry | |
| Compare | CMP Rx, Ry | |
| Set bit | SET Rx, Ry | |
| Reset bit | RES Rx, Ry | |
| Test bit | BIT Rx, Rx, Ry | |
| Assign bit | ASB Rx, Ry, Rx |