X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=jars.git;a=blobdiff_plain;f=mars.scm;h=677d754459360249224fe778e3175d70ac7b29d4;hp=3ead51f09ec9b19da85ae4bbba8bf6677590a72d;hb=3658516d8dd5cea71cac2a7637f5470b5b87b228;hpb=7290d31ea915ea868ca34857e62fea9133db33f8 diff --git a/mars.scm b/mars.scm index 3ead51f..677d754 100644 --- a/mars.scm +++ b/mars.scm @@ -79,7 +79,9 @@ ;;; Memory setup and addressing ;; - (define (make-core core-size initial-instr . set-functions) + (define INITIAL-INSTR (make-instr 'DAT 'F 'immediate 0 'immediate 0)) + + (define (make-core core-size . set-functions) (let ((core-vec (make-vector core-size '())) (names-vec (make-vector core-size '()))) (define (norm-addr i) @@ -105,7 +107,7 @@ (print)) (let loop ((i 0)) (unless (>= i core-size) - (vector-set! core-vec i (initial-instr 'make-copy)) + (vector-set! core-vec i (INITIAL-INSTR 'make-copy)) (loop (+ i 1)))) (lambda args (match args @@ -281,7 +283,7 @@ ((SLT) (list (core '->addr (+ ptr (if (compare-instrs core A-ptr B-ptr modifier <) 2 1))))) ((SPL) - (list (core '->addr (+ ptr 1) (core '->addr A-ptr)))) + (list (core '->addr (+ ptr 1)) (core '->addr A-ptr))) ((NOP) (list (core '->addr (+ ptr 1)))) (else