www

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

commit de059d41edc25be22fb9e0db974038cfccf9d8d2
parent 60fe52df6ddfc1e8a11f047a63d5fe7705f24eb5
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date:   Fri, 15 Oct 2010 23:24:59 +0200

Correction des erreurs.

Diffstat:
MVM/instruction.lisp | 90++++++++++++++++++++++++++++++++++++++++----------------------------------------
1 file changed, 45 insertions(+), 45 deletions(-)

diff --git a/VM/instruction.lisp b/VM/instruction.lisp @@ -25,94 +25,94 @@ ;; Quand HALT passe à t, on arrête la machine. (HALT . nil))) (actions `((get-memory . ,(lambda (index) (aref memory index))) - (set-memory . ,(lambda (index value) (setf (aref memeory index) value))) + (set-memory . ,(lambda (index value) (setf (aref memory index) value))) (get-register . ,(lambda (reg) (cdr (assoc reg registres)))) - (set-register . ,(lambda (reg) (setf (cdr (get-register reg)))))))) + (set-register . ,(lambda (reg value) (setf (cdr (assoc reg registres)) value)))))) (lambda (message &rest params) (apply (assoc message actions) params)))) (defun send (obj &rest params) (apply obj params)) -(defun get-memory (vm index) (send vm get-memory index)) -(defun set-memory (vm index value) (send vm get-memory index value)) -(defun get-register (vm register) (send vm get-register register)) -(defun set-register (vm register value) (send vm set-register register value)) +(defun get-memory (vm index) (send vm 'get-memory index)) +(defun set-memory (vm index value) (send vm 'get-memory index value)) +(defun get-register (vm register) (send vm 'get-register register)) +(defun set-register (vm register value) (send vm 'set-register register value)) -(defun LOAD (vm address register) +(defun ISN_LOAD (vm address register) (set-register vm register (get-memory vm address))) -(defun STORE (vm register address) +(defun ISN_STORE (vm register address) (set-memory vm address (get-register vm register))) -(defun MOVE (vm reg1 reg2) +(defun ISN_MOVE (vm reg1 reg2) (set-register vm reg2 (get-register vm reg1))) -(defun _OP_ (vm op reg1 reg2) +(defun ISN__OP_ (vm op reg1 reg2) (set-register vm reg2 (funcall op (get-register vm reg2) (get-register vm reg1)))) -(defun ADD (vm reg1 reg2) (_OP_ vm #'+ reg1 reg2)) -(defun SUB (vm reg1 reg2) (_OP_ vm #'- reg1 reg2)) -(defun MULT (vm reg1 reg2) (_OP_ vm #'* reg1 reg2)) -(defun DIV (vm reg1 reg2) (_OP_ vm #'/ reg1 reg2)) +(defun ISN_ADD (vm reg1 reg2) (ISN__OP_ vm #'+ reg1 reg2)) +(defun ISN_SUB (vm reg1 reg2) (ISN__OP_ vm #'- reg1 reg2)) +(defun ISN_MULT (vm reg1 reg2) (ISN__OP_ vm #'* reg1 reg2)) +(defun ISN_DIV (vm reg1 reg2) (ISN__OP_ vm #'/ reg1 reg2)) -(defun INCR (vm register) +(defun ISN_INCR (vm register) (set-register vm register (+ (get-register vm register) 1))) -(defun DECR (vm register) +(defun ISN_DECR (vm register) (set-register vm register (- (get-register vm register) 1))) -(defun PUSH (vm register) - (INCR vm 'SP) - (STORE vm register (get-register vm 'SP))) +(defun ISN_PUSH (vm register) + (ISN_INCR vm 'SP) + (ISN_STORE vm register (get-register vm 'SP))) -(defun POP (vm register) - (LOAD vm (get-register vm 'SP) register) - (DECR vm 'SP)) +(defun ISN_POP (vm register) + (ISN_LOAD vm (get-register vm 'SP) register) + (ISN_DECR vm 'SP)) -(defun JMP (vm dst) +(defun ISN_JMP (vm dst) (set-register vm 'PC dst)) (defun JSR (vm dst) - (PUSH vm 'PC) - (JMP vm dst)) + (ISN_PUSH vm 'PC) + (ISN_JMP vm dst)) -;; TODO : Remplir la fonction RTN -(defun RTN (vm) - (POP vm 'PC)) +(defun ISN_RTN (vm) + (ISN_POP vm 'PC)) -(defun CMP (vm reg1 reg2) +(defun ISN_CMP (vm reg1 reg2) (set-register vm 'EQ (= (get-register vm reg1) (get-register vm reg2))) (set-register vm 'PP (< (get-register vm reg1) (get-register vm reg2))) (set-register vm 'PG (> (get-register vm reg1) (get-register vm reg2)))) -(defun _JCOND_ (vm pp eq pg vm dst) +(defun ISN__JCOND_ (pp eq pg vm dst) (if (or (and eq (get-register vm 'EQ)) (and pg (get-register vm 'PG)) (and pp (get-register vm 'PP))) - (JMP vm dst))) + (ISN_JMP vm dst))) -(defun JEQ (vm dst) - (_JCOND_ vm nil t nil vm dst)) +(defun ISN_JEQ (vm dst) + (ISN__JCOND_ nil t nil vm dst)) -(defun JPG (vm dst) - (_JCOND_ vm nil nil t vm dst)) +(defun ISN_JPG (vm dst) + (ISN__JCOND_ nil nil t vm dst)) -(defun JPP (vm dst) - (_JCOND_ vm t nil nil vm dst)) +(defun ISN_JPP (vm dst) + (ISN__JCOND_ t nil nil vm dst)) -(defun JPE (vm dst) - (_JCOND_ vm t t nil vm dst)) +(defun ISN_JPE (vm dst) + (ISN__JCOND_ t t nil vm dst)) -(defun JPE (vm dst) - (_JCOND_ vm nil t t vm dst)) +(defun ISN_JPE (vm dst) + (ISN__JCOND_ nil t t vm dst)) -(defun JNE (vm dst) - (_JCOND_ vm t nil t vm dst)) +(defun ISN_JNE (vm dst) + (ISN__JCOND_ t nil t vm dst)) -(defun NOP (vm)) +(defun ISN_NOP (vm) + vm) -(defun HALT (vm) +(defun ISN_HALT (vm) (set-register vm 'HALT t))