File: m6-simple.lisp

package info (click to toggle)
acl2 8.6%2Bdfsg-2
  • links: PTS
  • area: main
  • in suites: trixie
  • size: 1,111,420 kB
  • sloc: lisp: 17,818,294; java: 125,359; python: 28,122; javascript: 23,458; cpp: 18,851; ansic: 11,569; perl: 7,678; xml: 5,591; sh: 3,976; makefile: 3,833; ruby: 2,633; yacc: 1,126; ml: 763; awk: 295; csh: 233; lex: 197; php: 178; tcl: 49; asm: 23; haskell: 17
file content (43 lines) | stat: -rw-r--r-- 1,615 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
(in-package "M6")
(include-book "../M6/m6-bytecode")

(ENCAPSULATE NIL
             (DEFUN M6-STEP (INST S)
               (if (not (no-fatal-error? s)) s
                 (LET ((OPCODE (INST-OPCODE INST)))
                      (COND ((EQUAL OPCODE 'HALT) S)
                            ((EQUAL OPCODE 'AALOAD)
                             (EXECUTE-AALOAD INST S))
                            ((EQUAL OPCODE 'AASTORE)
                             (EXECUTE-AASTORE INST S))
                            ((EQUAL OPCODE 'ALOAD)
                             (EXECUTE-ALOAD INST S))
                            ((EQUAL OPCODE 'ASTORE)
                             (EXECUTE-ASTORE INST S))
                            ((EQUAL OPCODE 'ANEWARRAY)
                             (EXECUTE-ANEWARRAY INST S))
                            ((EQUAL OPCODE 'IFEQ)
                             (EXECUTE-IFEQ INST S))
                            ((EQUAL OPCODE 'GETFIELD)
                             (EXECUTE-GETFIELD INST S))
                            ((EQUAL OPCODE 'ACONST_NULL)
                             (EXECUTE-ACONST_NULL INST S))
                            (T 'ERROR_STATE))))))

;; (defun m6-simple-run (n program s)
;;   (if (zp n) s
;;     (mylet* ((inst (inst-by-offset1 (pc s) program))
;;              (ns   (m6-step inst s)))
;;             (m6-simple-run (- n 1) program ns))))



(defun m6-simple-run (n s)
  (if (zp n) s
    (mylet* ((inst (next-inst s))
             (ns   (m6-step inst s)))
            (m6-simple-run (- n 1) ns))))



;----------------------------------------------------------------------