www

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

commit 3237acd2d1f450c30608963b6e1ea058c5f44409
parent 34d754bdf502ed0f0aef4a289b0a18ea23dc61d1
Author: Bertrand BRUN <bertrand.brun@me.com>
Date:   Fri, 15 Oct 2010 19:11:27 +0200

Ajout du cours du 15/10/2010

Diffstat:
Ajeux-instruction-de-la-VM | 36++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+), 0 deletions(-)

diff --git a/jeux-instruction-de-la-VM b/jeux-instruction-de-la-VM @@ -0,0 +1,35 @@ +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 @ <Reg>) +(STORE <Reg> @) +(MOVE <Reg> <Reg2>) => Reg = src et Reg2 = dest +(ADD <Reg> <Reg2>) => Reg = src et Reg2 = dest -> <Reg2> = <Reg2> + <Reg> +(SUB <Reg> <Reg2>) => Reg = src et Reg2 = dest -> <Reg2> = <Reg2> - <Reg> +(MULT <Reg> <Reg2>) => Reg = src et Reg2 = dest -> <Reg2> = <Reg2> * <Reg> +(DIV <Reg> <Reg2>) => Reg = src et Reg2 = dest -> <Reg2> = <Reg2> / <Reg> (On peut faire la detection du zero) +(INCR <Reg>) => Incremente le registre +1 +(DECR <Reg>) => Incremente le registre -1 +(PUSH <Reg>) => Met la valeur du registre sur la pile. Equivalent (INCR SP) (STORE <Reg> SP) +(POP <Reg>) => Depile le sommet de pile et le met dans Reg. Equivalent (LOAD SP <Reg>) (DECR SP) +(JMP <dst>) => dst est soit une @ soit un <Reg>. On peut utiliser une etiquette @etiquette. Ex: (JMP 'FACT) +(JSR <etiq>) => Empile l'adresse de retour pour pouvoir y retourner. Equivalent (PUSH PC) (JMP <etiq>) +(RTN) => Equivalent (LOAD SP R0) (DECR SP) (JMP R0) +(CMP <Reg> <Reg2>) => Si R1 = R2 alors EQ <- V, PP <- F, PG <- F etc +(JEQ <etiq>) => Fait un saut a l'etique si EQ est V +(JPG <etiq>) => Plus Grand +(JPP <etiq>) => Plus Petit +(JPE <etiq>) => Plus Petit ou egale +(JGE <etiq>) => Plus Grand ou egale +(JNE <etiq>) => Non egale +(NOP) => Ne fait rien +(HALT) => Stop +\ No newline at end of file