blob: 8e8ca2e7f071c0df164b49cf5a83756f2953dfa2 (
plain)
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
|
;;; instruction-test.asm: A file that contains all possible opcodes in
;;; order, with proper calling convention. Used to test lexer and
;;; parser but isn't a semantically correct program, but may be run as
;;; first instruction is halt (so program will stop immediately).
halt
push.byte 1
push.hword 2
push.word 3
pop.byte
pop.hword
pop.word
push.reg.byte 1
push.reg.hword 2
push.reg.word 3
mov.byte 1
mov.hword 2
mov.word 3
dup.byte 1
dup.hword 2
dup.word 3
malloc.byte 1
malloc.hword 2
malloc.word 3
malloc.stack.byte
malloc.stack.hword
malloc.stack.word
mset.byte 1
mset.hword 2
mset.word 3
mset.stack.byte
mset.stack.hword
mset.stack.word
mget.byte 1
mget.hword 2
mget.word 3
mget.stack.byte
mget.stack.hword
mget.stack.word
not.byte
not.hword
not.word
or.byte
or.hword
or.word
and.byte
and.hword
and.word
xor.byte
xor.hword
xor.word
eq.byte
eq.hword
eq.word
plus.byte
plus.hword
plus.word
sub.byte
sub.hword
sub.word
print.char
print.byte
print.int
print.hword
print.long
print.word
jump.abs 1
jump.stack
jump.if.byte 1
jump.if.hword 2
jump.if.word 3
;; Testing if overflows work correctly
;; Format is:
;; -1 All bits are turned on
;; UINT_MAX All bits are turned on
;; INT_MAX All bits but the most significant are on
;; INT_MIN Only the most significant bit is on
push.byte -1
push.byte 255
push.byte 127
push.byte -128
push.hword -1
push.hword 4294967295
push.hword 2147483647
push.hword -2147483648
push.word -1
push.word 18446744073709551615
push.word 9223372036854775807
push.word -9223372036854775808
|