2018-02-18 18:15:37 +00:00
|
|
|
170 loadI 0 => r_nul // initialise zero register
|
|
|
|
171 loadI 176 => r_arp // malloc
|
|
|
|
172 push r_arp // malloc
|
|
|
|
173 loadI 20 => r_arp // malloc
|
|
|
|
174 push r_arp // malloc
|
|
|
|
175 jumpI -> memalloc // malloc
|
|
|
|
176 pop => r_arp // malloc
|
|
|
|
177 addI r_arp,16 => r_arp // construct main AR
|
2018-03-26 14:29:34 +00:00
|
|
|
178 loadI 183 => r_1 // malloc
|
|
|
|
179 push r_1 // malloc
|
|
|
|
180 loadI 8 => r_1 // malloc
|
|
|
|
181 push r_1 // malloc
|
2018-02-18 18:15:37 +00:00
|
|
|
182 jumpI -> memalloc // malloc
|
2018-03-26 14:29:34 +00:00
|
|
|
183 pop => r_1 // malloc
|
|
|
|
184 loadI 189 => r_2 // malloc
|
|
|
|
185 push r_2 // malloc
|
|
|
|
186 loadI 8 => r_2 // malloc
|
|
|
|
187 push r_2 // malloc
|
2018-02-18 18:15:37 +00:00
|
|
|
188 jumpI -> memalloc // malloc
|
2018-03-26 14:29:34 +00:00
|
|
|
189 pop => r_2 // malloc
|
|
|
|
190 loadI 1 => r_3 // 1
|
|
|
|
191 storeAI r_3 => r_2,0 // store array element
|
|
|
|
192 loadI 2 => r_3 // 2
|
|
|
|
193 storeAI r_3 => r_2,4 // store array element
|
|
|
|
194 storeAI r_2 => r_1,0 // store array element
|
|
|
|
195 loadI 200 => r_2 // malloc
|
|
|
|
196 push r_2 // malloc
|
|
|
|
197 loadI 8 => r_2 // malloc
|
|
|
|
198 push r_2 // malloc
|
2018-02-18 18:15:37 +00:00
|
|
|
199 jumpI -> memalloc // malloc
|
2018-03-26 14:29:34 +00:00
|
|
|
200 pop => r_2 // malloc
|
|
|
|
201 loadI 3 => r_3 // 3
|
|
|
|
202 storeAI r_3 => r_2,0 // store array element
|
|
|
|
203 loadI 4 => r_3 // 4
|
|
|
|
204 storeAI r_3 => r_2,4 // store array element
|
|
|
|
205 storeAI r_2 => r_1,4 // store array element
|
|
|
|
206 addI r_arp,0 => r_2 // add offset
|
|
|
|
207 load r_2 => r_3 // load reference
|
|
|
|
208 cmp_EQ r_3,r_nul => r_4 // remove old reference
|
|
|
|
209 cbr r_4 -> ynul0,nnul1 // remove old reference
|
2018-02-18 18:15:37 +00:00
|
|
|
210 nnul1: nop // remove old reference
|
2018-03-26 14:29:34 +00:00
|
|
|
211 loadI 215 => r_4 // free
|
|
|
|
212 push r_4 // free
|
|
|
|
213 push r_3 // free
|
2018-02-18 18:15:37 +00:00
|
|
|
214 jumpI -> memfree // free
|
|
|
|
215 ynul0: nop // remove old reference
|
2018-03-26 14:29:34 +00:00
|
|
|
216 store r_1 => r_2 // to matrix
|
|
|
|
217 load r_2 => r_3 // load reference
|
|
|
|
218 loadI 222 => r_5 // memaddref
|
|
|
|
219 push r_5 // memaddref
|
|
|
|
220 push r_3 // memaddref
|
2018-02-18 18:15:37 +00:00
|
|
|
221 jumpI -> memaddref // memaddref
|
2018-03-26 14:29:34 +00:00
|
|
|
222 cmp_EQ r_1,r_nul => r_3 // remove old reference
|
|
|
|
223 cbr r_3 -> ynul2,nnul3 // remove old reference
|
2018-02-18 18:15:37 +00:00
|
|
|
224 nnul3: nop // remove old reference
|
2018-03-26 14:29:34 +00:00
|
|
|
225 loadI 229 => r_3 // free
|
|
|
|
226 push r_3 // free
|
|
|
|
227 push r_1 // free
|
2018-02-18 18:15:37 +00:00
|
|
|
228 jumpI -> memfree // free
|
|
|
|
229 ynul2: nop // remove old reference
|
2018-03-26 14:29:34 +00:00
|
|
|
230 addI r_arp,0 => r_2 // add offset
|
|
|
|
231 load r_2 => r_2 // get array object
|
|
|
|
232 loadI 0 => r_3 // 0
|
|
|
|
233 loadAI r_2,-4 => r_1 // check array index
|
|
|
|
234 divI r_1,4 => r_1 // check array index
|
|
|
|
235 cmp_LT r_3,r_1 => r_1 // check array index
|
|
|
|
236 cmp_GE r_3,r_nul => r_4 // check array index
|
|
|
|
237 and r_1,r_4 => r_4 // check array index
|
|
|
|
238 cbr r_4 -> nob5,oob4 // check array index
|
2018-02-18 18:15:37 +00:00
|
|
|
239 oob4: haltI 1634692962 // array index out of bounds
|
2018-03-26 14:29:34 +00:00
|
|
|
240 nob5: multI r_3,4 => r_3 // multiply index by size
|
|
|
|
241 add r_2,r_3 => r_2 // get array index address
|
|
|
|
242 load r_2 => r_2 // get array object
|
|
|
|
243 loadI 1 => r_4 // 1
|
|
|
|
244 loadAI r_2,-4 => r_3 // check array index
|
|
|
|
245 divI r_3,4 => r_3 // check array index
|
|
|
|
246 cmp_LT r_4,r_3 => r_3 // check array index
|
|
|
|
247 cmp_GE r_4,r_nul => r_1 // check array index
|
|
|
|
248 and r_3,r_1 => r_1 // check array index
|
|
|
|
249 cbr r_1 -> nob7,oob6 // check array index
|
2018-02-18 18:15:37 +00:00
|
|
|
250 oob6: haltI 1634692962 // array index out of bounds
|
2018-03-26 14:29:34 +00:00
|
|
|
251 nob7: multI r_4,4 => r_4 // multiply index by size
|
|
|
|
252 add r_2,r_4 => r_2 // get array index address
|
|
|
|
253 load r_2 => r_2 // load address
|
|
|
|
254 out "",r_2 //
|
|
|
|
255 loadAI r_arp,0 => r_4 // remove reference get var
|
|
|
|
256 cmp_EQ r_4,r_nul => r_1 // remove reference
|
|
|
|
257 cbr r_1 -> ynul8,nnul9 // remove reference
|
2018-02-18 18:15:37 +00:00
|
|
|
258 nnul9: nop // remove reference
|
2018-03-26 14:29:34 +00:00
|
|
|
259 loadI 263 => r_1 // free
|
|
|
|
260 push r_1 // free
|
|
|
|
261 push r_4 // free
|
2018-02-18 18:15:37 +00:00
|
|
|
262 jumpI -> memfree // free
|
|
|
|
263 ynul8: nop // remove reference
|
|
|
|
264 subI r_arp,16 => r_arp // deconstruct main AR
|
2018-03-26 14:29:34 +00:00
|
|
|
265 loadI 269 => r_2 // free
|
|
|
|
266 push r_2 // free
|
2018-02-18 18:15:37 +00:00
|
|
|
267 push r_arp // free
|
|
|
|
268 jumpI -> memfree // free
|