Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
back2root:programmation:virtual-cpu-v1 [2022/09/05 00:26] – [Instruction Opcode] frater | back2root:programmation:virtual-cpu-v1 [2025/03/11 09:37] (Version actuelle) – [Tableau] frater | ||
---|---|---|---|
Ligne 19: | Ligne 19: | ||
l' | l' | ||
- | de gauche à droite: | + | {{tablelayout? |
+ | ^ 15 ^ 14 ^ 13 ^ 12 ^ 11 ^ 10 ^ 9 ^ 8 ^ 7 | ||
+ | | id |||| paramètre 1 | ||
- | | + | {{tablelayout? |
- | | + | ^ bits |
- | | + | | 15-12 | 4 bits d' |
- | | + | | 11-8 |
+ | | 7-4 | 4 bits pour le 2ème paramètre (si nécessaire)\\ c'est souvent la source | ||
+ | | 3-0 | 4 bits pour la longueur (si nécessaire) de l' | ||
- | < | + | **La longueur |
- | 0x0000 | + | |
- | |||| | + | |
- | |||+---> Longueur | + | |
- | ||| 0 : aucun, l' | + | |
- | ||| 1 : 1 byte | + | |
- | ||| 2 : 2 bytes | + | |
- | ||| | + | |
- | ||+----> params #2 (souvent la source ou la définition du paramètre #2) | + | |
- | || 0..B : voir le mode de d' | + | |
- | || C..E : spécifique à l' | + | |
- | || | + | |
- | |+-----> params #1 (souvent la destination) | + | |
- | | 0..B : voir le mode de d' | + | |
- | | C..F : spécifique à l' | + | |
- | +------> instruction | + | |
- | </ | + | |
+ | nombre de byte(s) a lire en plus de l' | ||
+ | |||
+ | | 0x00 | aucun, l' | ||
+ | | 0x01 | 1 byte (BYTE) | ||
+ | | 0x02 | 2 bytes (WORD) | ||
+ | | 0x03 | 4 bytes (LONG) | ||
+ | |||
+ | **params #2** | ||
+ | |||
+ | souvent la source ou la définition du paramètre #2 | ||
+ | |||
+ | | 0x00..0x0B | ||
+ | | 0x0C..0x0E | ||
+ | | 0x0F | accès directe (les bytes suivant sont la valeur) | ||
+ | |||
+ | **params #1** | ||
+ | |||
+ | souvent la destination | ||
+ | | 0x00..0x0B | ||
+ | | 0x0C..0x0F | ||
===== Mode d' | ===== Mode d' | ||
- | < | + | {{tablelayout? |
- | 3210 | + | ^ 3 |
- | |||| | + | | |
- | ||++-> | + | |
- | ++---> | + | {{tablelayout? |
- | 01 : spécifie un Registre de type adresse (ADDR) Ax | + | ^ RegID ^ identifiant du Registre (0..3) |
- | 10 : spécifie une donnée pointée par le registre d' | + | | b00 | spécifie un Registre de type Données (DATA) Dx | |
- | 11 : parametres | + | | b01 | spécifie un Registre de type adresse (ADDR) Ax | |
- | </ | + | | b10 | spécifie une donnée pointée par le registre d' |
+ | | b11 | parametres | ||
ce qui veut dire que l'on peut avoir : | ce qui veut dire que l'on peut avoir : | ||
- | + | {{tablelayout? | |
- | | || | + | ^ Valeur |
- | ^ Valeur | + | | 0 |
- | | 0 | D0 | 8 | [A0] | | + | | 1 |
- | | 1 | D1 | 9 | [A1] | | + | | 2 |
- | | 2 | D2 | A | [A2] | | + | | 3 |
- | | 3 | D3 | B | [A3] | | + | | 4 |
- | | 4 | A0 | | + | | 5 |
- | | 5 | A1 | ::: | + | | 6 |
- | | 6 | A2 | ::: | + | | 7 |
- | | 7 | A3 | ::: | + | |
===== Instruction Opcode ===== | ===== Instruction Opcode ===== | ||
"most significant bits", càd les 4bits de gauche | "most significant bits", càd les 4bits de gauche | ||
- | + | {{tablelayout? | |
- | < | + | | 0x0 |
- | 0 : | + | | 0x1 |
- | 1 : | + | | 0x2 |
- | 2 : | + | | 0x3 |
- | 3 : | + | | 0x4 |
- | 4 : | + | | 0x5 |
- | 5 : | + | | 0x6 |
- | 6 : | + | | 0x7 |
- | 7 : | + | | 0x8..0xB | unused |
- | 8..B : unused | + | | 0xC |
- | C : | + | | 0xE |
- | E : | + | | 0xF |
- | F : | + | |
- | </ | + | |
===== Special instruction opcode ===== | ===== Special instruction opcode ===== | ||
- | + | {{tablelayout? | |
- | < | + | | |
- | 0x0000 : NOP | + | | |
- | 0x0FFF | + | | |
- | 0x0001 : ORG (set PC) | + | | |
- | 0x0002 : STACK (Set SP) | + | | |
- | 0x0003 : CLEAR (Clear flag register) | + | |
- | </ | + | |
<nspages back2root/ | <nspages back2root/ |