Documentation technique
Comment le CPU décode et exécute chaque instruction.
Format d'instruction
16 bits, 4 champs de 4 bits
Chaque ligne de programme fait 16 bits, découpés en OPCODE puis ARG1, ARG2, ARG3 (4 bits chacun). Pour STORE, JMP et JZ, ARG1 et ARG2 sont assemblés ensemble pour former une valeur 8 bits (adresse mémoire ou numéro de ligne).
OPCODE ARG1 ARG2 ARG3
0010 0000 0011 0001 → STORE 3 R1
0010 0000 0011 0001 → STORE 3 R1
Contrôle de flux
Compteur de ligne & décodeur
Le programme (64 lignes max) avance via un compteur ; JMP et JZ le téléportent directement sur la ligne cible via un décodeur de commandes en blocs.
| Drapeau JZ | Condition |
|---|---|
| 100 | Valeur A > Valeur B |
| 010 | Valeur A = Valeur B |
| 001 | Valeur B > Valeur A |
ISA-REF
Les 16 opcodes
| Binaire | Mnémonique | Arguments | Description |
|---|---|---|---|
| 0000 | NOP | - | Ne fait rien. |
| 0001 | LOAD | reg, valeur (0-15) | Charge une valeur 4 bits (0-15) dans un registre. Pour une valeur plus grande, on la construit avec ADD. |
| 0010 | STORE | adresse (0-255), reg | Écrit le registre en mémoire à l'adresse donnée. ARG1+ARG2 sont assemblés pour former l'adresse 8 bits, ARG3 est le registre source. |
| 0011 | MOV | destination, source | Copie un registre dans un autre (ordre inversé : ARG1 = destination, ARG2 = source). |
| 0100 | ADD | - | R5 = R7 + R6. |
| 0101 | SUB | - | R5 = R7 - R6. (mnémonique en cours de câblage dans l'assembleur, invoqué pour l'instant via le code brut 0101) |
| 0110 | AND | - | R5 = R7 AND R6. |
| 0111 | OR | - | R5 = R7 OR R6. |
| 1000 | XOR | - | R5 = R7 XOR R6. |
| 1001 | NOT | - | R5 = NOT R7. |
| 1010 | SHL | - | R5 = R7 décalé à gauche. |
| 1011 | SHR | - | R5 = R7 décalé à droite. |
| 1100 | CMP | - | Compare R2 (valeur A) et R3 (valeur B), écrit le résultat dans R4. |
| 1101 | JMP | ligne (0-63) | Saut inconditionnel. ARG1+ARG2 assemblés forment le numéro de ligne cible. |
| 1110 | JZ | ligne (0-63), drapeau | Saut conditionnel selon le résultat de CMP (voir table des drapeaux ci-dessous). |
| 1111 | HALT / HLT | - | Arrête le CPU. |
Emplacement image (horizontal)
images/schema-decodeur.png
images/schema-decodeur.png
Emplacement image (horizontal)
images/alu-detail.png
images/alu-detail.png