blob: 7a96c51707c18110fbd59937a1767b6fffe5e35d (
plain) (
blame)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
(define-library (csc encoding-test)
(import (scheme base)
(only (csc testing)
assert-equal
test)
(csc encoding))
(begin
(test encode-mov
(assert-equal
#u8(0 1 2)
(encode '((mov (local 1) (local 2))))))
(test encode-int
(assert-equal
#u8(2 1 #x15 0 0 0 0 0 0 0)
(encode '((mov (local 1) (const 10))))))
(test encode-negative-int
(assert-equal
#u8(2 1 #xed #xff #xff #xff #xff #xff #xff #xff)
(encode '((mov (local 1) (const -10))))))
(test encode-true
(assert-equal
#u8(2 1 #xa 0 0 0 0 0 0 0)
(encode '((mov (local 1) (const #t))))))
(test encode-false
(assert-equal
#u8(2 1 #x2 0 0 0 0 0 0 0)
(encode '((mov (local 1) (const #f))))))
(test encode-nil
(assert-equal
#u8(2 1 #x12 0 0 0 0 0 0 0)
(encode '((mov (local 1) (const ()))))))
(test encode-jmpif
(assert-equal
#u8(4 1 2)
(encode '((jmpif (local 1) (local 2))))))
(test encode-jmp
(assert-equal
#u8(8 1)
(encode '((jmp (local 1))))))
(test encode-alloc
(assert-equal
#u8(12 1 2)
(encode '((alloc (local 1) (local 2))))))
(test encode-peek
(assert-equal
#u8(17 1 2 1 0 0 0 0 0 0 0)
(encode '((peek (local 1) (local 2) (const 0))))))
(test encode-poke
(assert-equal
#u8(23 #x15 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0)
(encode '((poke (const 10) (local 1) (const 0))))))
(test encode-add
(assert-equal
#u8(24 1 2 3)
(encode '((add (local 1) (local 2) (local 3))))))
(test encode-sub
(assert-equal
#u8(28 1 2 3)
(encode '((sub (local 1) (local 2) (local 3))))))
(test encode-mul
(assert-equal
#u8(32 1 2 3)
(encode '((mul (local 1) (local 2) (local 3))))))
(test encode-div
(assert-equal
#u8(36 1 2 3)
(encode '((div (local 1) (local 2) (local 3))))))
(test encode-mod
(assert-equal
#u8(40 1 2 3)
(encode '((mod (local 1) (local 2) (local 3))))))
(test encode-peekbyte
(assert-equal
#u8(44 1 2 3)
(encode '((peekbyte (local 1) (local 2) (local 3))))))
(test encode-pokebyte
(assert-equal
#u8(48 1 2 3)
(encode '((pokebyte (local 1) (local 2) (local 3))))))
(test encode-exit
(assert-equal
#u8(52)
(encode '((exit)))))))
|