www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

jeux-instruction-de-la-VM (1651B)


      1 Registres => R0, R1, R2
      2 
      3 Registres Special => BP (Base Pointer), SP (Stack Pointer), PC (Programme Counter -> Compteur Ordinale)
      4 Pile vide -> SP <= BP (pile montante)
      5 
      6 3 registres booleen => PP EQ PG. Ne peut etre modifier que par le CMP
      7 
      8 Memoire => 0 ... N-1 (un tableau en concret)
      9 
     10 Il FAUT que le chargeur soit compiler et charger dans la VM => En gros faire un boot strap
     11 
     12 Instruction :
     13 (LOAD @ <Reg>)
     14 (STORE <Reg> @)
     15 (MOVE <Reg> <Reg2>) => Reg = src et Reg2 = dest
     16 (ADD <Reg> <Reg2>) => Reg = src et Reg2 = dest -> <Reg2> = <Reg2> + <Reg>
     17 (SUB <Reg> <Reg2>) => Reg = src et Reg2 = dest -> <Reg2> = <Reg2> - <Reg>
     18 (MULT <Reg> <Reg2>) => Reg = src et Reg2 = dest -> <Reg2> = <Reg2> * <Reg>
     19 (DIV <Reg> <Reg2>) => Reg = src et Reg2 = dest -> <Reg2> = <Reg2> / <Reg> (On peut faire la detection du zero)
     20 (INCR <Reg>) => Incremente le registre +1
     21 (DECR <Reg>) => Incremente le registre -1
     22 (PUSH <Reg>) => Met la valeur du registre sur la pile. Equivalent (INCR SP) (STORE <Reg> SP)
     23 (POP <Reg>) => Depile le sommet de pile et le met dans Reg. Equivalent (LOAD SP <Reg>) (DECR SP)
     24 (JMP <dst>) => dst est soit une @ soit un <Reg>. On peut utiliser une etiquette @etiquette. Ex: (JMP 'FACT)
     25 (JSR <etiq>) => Empile l'adresse de retour pour pouvoir y retourner. Equivalent (PUSH PC) (JMP <etiq>)
     26 (RTN) => Equivalent (LOAD SP R0) (DECR SP) (JMP R0)
     27 (CMP <Reg> <Reg2>) => Si R1 = R2 alors EQ <- V, PP <- F, PG <- F etc
     28 (JEQ <etiq>) => Fait un saut a l'etique si EQ est V
     29 (JPG <etiq>) => Plus Grand
     30 (JPP <etiq>) => Plus Petit
     31 (JPE <etiq>) => Plus Petit ou egale
     32 (JGE <etiq>) => Plus Grand ou egale
     33 (JNE <etiq>) => Non egale
     34 (NOP) => Ne fait rien 
     35 (HALT) => Stop