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