about summary refs log tree commit diff stats
path: root/302stack_allocate.subx
Commit message (Collapse)AuthorAgeFilesLines
* 6760Kartik Agaram2020-09-081-7/+6
| | | | | | | | Fix a couple of subtle bugs. - the VM was conditionally reading from the instruction stream, so that other bugs got masked by decoding errors. - push-n-bytes was clobbering eax.
* 6612 - reorganize layersKartik Agaram2020-07-051-0/+62
8' href='#n58'>58 59 60 61 62
'n55' href='#n55'>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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
c{0: 0 (((1 string-address)) <- ((new)) abc/) -- nil
c{0: 1 (((2 integer)) <- ((find-next)) ((1 string-address)) ((/ literal)) ((0 literal))) -- nil
c{1: 0 ✓ (((1 string-address)) <- ((new)) abc/)
c{1: 1 ✓ (((2 integer)) <- ((find-next)) ((1 string-address)) ((/ literal)) ((0 literal)))
cn0: convert-names in main
cn0: (((1 string-address)) <- ((new)) abc/) nil nil
cn0: checking arg abc/
cn0: checking oarg ((1 string-address))
maybe-add: ((1 string-address))
cn0: (((2 integer)) <- ((find-next)) ((1 string-address)) ((/ literal)) ((0 literal))) nil nil
cn0: checking arg ((1 string-address))
maybe-add: ((1 string-address))
cn0: checking arg ((/ literal))
cn0: checking arg ((0 literal))
cn0: checking oarg ((2 integer))
maybe-add: ((2 integer))
cn1: (((1 string-address)) <- ((new)) abc/)
cn1: (((2 integer)) <- ((find-next)) ((1 string-address)) ((/ literal)) ((0 literal)))
schedule: main
run: main 0: (((1 string-address)) <- ((new)) abc/)
run: main 0: 1000 => ((1 string-address))
mem: ((1 string-address)): 1 <= 1000
run: main 1: (((2 integer)) <- ((find-next)) ((1 string-address)) ((/ literal)) ((0 literal)))
mem: ((1 string-address)) => 1000
run: find-next/main 0: (((default-space space-address)) <- ((new)) ((space literal)) ((30 literal)))
run: find-next/main 0: 1005 => ((default-space space-address))
run: find-next/main 1: (((1 string-address)) <- ((next-input)))
arg: nil 0 (1000 #\/ 0)
run: find-next/main 1: 1000 => ((1 string-address))
mem: ((1 string-address)): 1007 <= 1000
run: find-next/main 2: (((2 character)) <- ((next-input)))
arg: nil 1 (1000 #\/ 0)
run: find-next/main 2: #\/ => ((2 character))
mem: ((2 character)): 1008 <= #\/
run: find-next/main 3: (((3 integer)) <- ((next-input)))
arg: nil 2 (1000 #\/ 0)
run: find-next/main 3: 0 => ((3 integer))
mem: ((3 integer)): 1009 <= 0
run: find-next/main 4: (((4 integer)) <- ((length)) ((1 string-address) (deref)))
array-len: ((1 string-address) (deref))
mem: ((1000 integer) (raw)) => 4
run: find-next/main 4: 4 => ((4 integer))
mem: ((4 integer)): 1010 <= 4
run: find-next/main 5: (((5 boolean)) <- ((greater-or-equal)) ((3 integer)) ((4 integer)))
mem: ((3 integer)) => 0
mem: ((4 integer)) => 4
run: find-next/main 5: nil => ((5 boolean))
mem: ((5 boolean)): 1011 <= nil
run: find-next/main 6: (((jump-if)) ((5 boolean)) ((5 offset)))
mem: ((5 boolean)) => nil
run: find-next/main 7: (((6 byte)) <- ((index)) ((1 string-address) (deref)) ((3 integer)))
mem: ((3 integer)) => 0
array-len: ((1000 string) (raw))
mem: ((1000 integer) (raw)) => 4
mem: ((1001 byte) (raw)) => a
run: find-next/main 7: #\a => ((6 byte))
mem: ((6 byte)): 1012 <= #\a
run: find-next/main 8: (((7 boolean)) <- ((equal)) ((6 byte)) ((2 character)))
mem: ((6 byte)) => a
mem: ((2 character)) => /
run: find-next/main 8: nil => ((7 boolean))
mem: ((7 boolean)): 1013 <= nil
run: find-next/main 9: (((jump-if)) ((7 boolean)) ((2 offset)))
mem: ((7 boolean)) => nil
run: find-next/main 10: (((3 integer)) <- ((add)) ((3 integer)) ((1 literal)))
mem: ((3 integer)) => 0
run: find-next/main 10: 1 => ((3 integer))
mem: ((3 integer)): 1009 <= 1
run: find-next/main 11: (((jump)) ((-7 offset)))
run: find-next/main 5: (((5 boolean)) <- ((greater-or-equal)) ((3 integer)) ((4 integer)))
mem: ((3 integer)) => 1
mem: ((4 integer)) => 4
run: find-next/main 5: nil => ((5 boolean))
mem: ((5 boolean)): 1011 <= nil
run: find-next/main 6: (((jump-if)) ((5 boolean)) ((5 offset)))
mem: ((5 boolean)) => nil
run: find-next/main 7: (((6 byte)) <- ((index)) ((1 string-address) (deref)) ((3 integer)))
mem: ((3 integer)) => 1
array-len: ((1000 string) (raw))
mem: ((1000 integer) (raw)) => 4
mem: ((1002 byte) (raw)) => b
run: find-next/main 7: #\b => ((6 byte))
mem: ((6 byte)): 1012 <= #\b
run: find-next/main 8: (((7 boolean)) <- ((equal)) ((6 byte)) ((2 character)))
mem: ((6 byte)) => b
mem: ((2 character)) => /
run: find-next/main 8: nil => ((7 boolean))
mem: ((7 boolean)): 1013 <= nil
run: find-next/main 9: (((jump-if)) ((7 boolean)) ((2 offset)))
mem: ((7 boolean)) => nil
run: find-next/main 10: (((3 integer)) <- ((add)) ((3 integer)) ((1 literal)))
mem: ((3 integer)) => 1
run: find-next/main 10: 2 => ((3 integer))
mem: ((3 integer)): 1009 <= 2
run: find-next/main 11: (((jump)) ((-7 offset)))
run: find-next/main 5: (((5 boolean)) <- ((greater-or-equal)) ((3 integer)) ((4 integer)))
mem: ((3 integer)) => 2
mem: ((4 integer)) => 4
run: find-next/main 5: nil => ((5 boolean))
mem: ((5 boolean)): 1011 <= nil
run: find-next/main 6: (((jump-if)) ((5 boolean)) ((5 offset)))
mem: ((5 boolean)) => nil
run: find-next/main 7: (((6 byte)) <- ((index)) ((1 string-address) (deref)) ((3 integer)))
mem: ((3 integer)) => 2
array-len: ((1000 string) (raw))
mem: ((1000 integer) (raw)) => 4
mem: ((1003 byte) (raw)) => c
run: find-next/main 7: #\c => ((6 byte))
mem: ((6 byte)): 1012 <= #\c
run: find-next/main 8: (((7 boolean)) <- ((equal)) ((6 byte)) ((2 character)))
mem: ((6 byte)) => c
mem: ((2 character)) => /
run: find-next/main 8: nil => ((7 boolean))
mem: ((7 boolean)): 1013 <= nil
run: find-next/main 9: (((jump-if)) ((7 boolean)) ((2 offset)))
mem: ((7 boolean)) => nil
run: find-next/main 10: (((3 integer)) <- ((add)) ((3 integer)) ((1 literal)))
mem: ((3 integer)) => 2
run: find-next/main 10: 3 => ((3 integer))
mem: ((3 integer)): 1009 <= 3
run: find-next/main 11: (((jump)) ((-7 offset)))
run: find-next/main 5: (((5 boolean)) <- ((greater-or-equal)) ((3 integer)) ((4 integer)))
mem: ((3 integer)) => 3
mem: ((4 integer)) => 4
run: find-next/main 5: nil => ((5 boolean))
mem: ((5 boolean)): 1011 <= nil
run: find-next/main 6: (((jump-if)) ((5 boolean)) ((5 offset)))
mem: ((5 boolean)) => nil
run: find-next/main 7: (((6 byte)) <- ((index)) ((1 string-address) (deref)) ((3 integer)))
mem: ((3 integer)) => 3
array-len: ((1000 string) (raw))
mem: ((1000 integer) (raw)) => 4
mem: ((1004 byte) (raw)) => /
run: find-next/main 7: #\/ => ((6 byte))
mem: ((6 byte)): 1012 <= #\/
run: find-next/main 8: (((7 boolean)) <- ((equal)) ((6 byte)) ((2 character)))
mem: ((6 byte)) => /
mem: ((2 character)) => /
run: find-next/main 8: t => ((7 boolean))
mem: ((7 boolean)): 1013 <= t
run: find-next/main 9: (((jump-if)) ((7 boolean)) ((2 offset)))
mem: ((7 boolean)) => t
run: find-next/main 12: (((reply)) ((3 integer)))
mem: ((3 integer)) => 3
run: main 1: 3 => ((2 integer))
mem: ((2 integer)): 2 <= 3
schedule: done with routine nil