Outils pour utilisateurs

Outils du site


back2root:programmation:virtual-cpu-v1

Différences

Ci-dessous, les différences entre deux révisions de la page.


programmation:virtual-cpu-v1 [2021/05/16 02:27] – créée frater
Ligne 1: Ligne 1:
-====== Virtual CPU v1 ====== 
  
-Dans le cadre d'un projet de site WEB, j'ai eut besoin d'avoir un "interpréteur" de commande. 
-Pour expérimenter un peu (et aussi pour le plaisir), j'ai eu envie de créer mon "propre CPU". 
-Celui-ci doit être simple, disposer d'un assembleur et être paramétrable. 
- 
-===== Caractéristiques ===== 
- 
-Je me suis inspiré du Motorola 680x0 pour mon "CPU". 
- 
-| Longueur d'instruction    | 16 bits           | 
-| instruction arithmétique  | 8, 16 ou 32 bits  | 
-| registres d'adresse       | 4 registres Ax    | 
-| registres de données      | 4 registres Dx    |    
- 
-===== Structure d'une instruction ===== 
- 
-les deux premiers octets sont obligatoirement une instruction. 
- 
-<code> 
-0x0000 
-  |||| 
-  |||+---> Longueur   
-  |||        0 : none 
-  |||        1 : 1 byte 
-  |||        2 : 2 bytes 
-  |||        3 : 4 bytes 
-  ||+----> params #2 (souvent la source ou la définition du paramètre #2) 
-  ||         0..B : voir le mode de d'adressage du registre 
-  ||         C..E : spécifique à l'instruction 
-  ||            : accès directe (les bytes suivant sont la valeur)  
-  |+-----> params #1 (souvent la destination) 
-  |          0..B : voir le mode de d'adressage du registre 
-  |          C..F : spécifique à l'instruction 
-  +------> instruction  
-</code> 
- 
-===== Mode d'adressage du registre (format du Parametre #1 et #2) ===== 
- 
-<code> 
-3210 
-|||| 
-||++->  identifiant du Registre (0..3) 
-++--->  00 : spécifie un Registre de type Données (DATA) Dx 
-        01 : spécifie un Registre de type adresse (ADDR) Ax 
-        10 : spécifie une donnée pointée par le registre d'adresse Ax 
-        11 : parametres 
-</code> 
- 
-ce qui veut dire que l'on peut avoir : 
- 
-^ Valeur du Registre ^ Valeur Pointée ^ 
-| 0 : D0 | 8 : [A0] | 
-| 1 : D1 | 9 : [A1] | 
-| 2 : D2 | A : [A2] | 
-| 3 : D3 | B : [A3] | 
-| 4 : A0 | | 
-| 5 : A1 | | 
-| 6 : A2 | | 
-| 7 : A3 | | 
- 
-===== Instruction Opcode ===== 
- 
-<code> 
-0     : NOP or specific machine operands 
-1     : MOVE 
-2     : ADD / INC 
-3     : SUB / DEC 
-4     : MUL  
-5     : DIV 
-6     : ROR  
-7     : ROL 
-8..B  : unused 
-C     : PUSH / POP / CALL / RET 
-E     : CMP 
-F     : JMP  (extended) 
-</code> 
- 
-===== Special instruction opcode ===== 
- 
-<code> 
-0x0000 : NOP 
-0x0FFF : HALT 
-0x0001 : ORG (set PC) 
-0x0002 : STACK (Set SP) 
-0x0003 : CLEAR (Clear flag register) 
-</code> 
back2root/programmation/virtual-cpu-v1.txt · Dernière modification : de frater