git @ Cat's Eye Technologies SixtyPical / 646ec38
Spec `goto`. Chris Pressey 6 years ago
1 changed file(s) with 25 addition(s) and 6 deletion(s). Raw diff Collapse all Expand all
290290
291291 Transfers execution to the given executable, whether that is a previously-
292292 defined routine, or a vector location which contains the address of a routine
293 which will be called indirectly.
293 which will be called indirectly. Execution will be transferred back to the
294 current routine, when execution of the executable is finished.
294295
295296 Just before the call,
296297
297 * It is illegal if any of the memory locations in the called routine's
298 * It is illegal if any of the memory locations in the target executable's
298299 READS list is uninitialized.
299300
300301 Just after the call,
303304 list are considered uninitialized.
304305 * All memory locations listed as TRASHED in the called routine's OUTPUTS
305306 list are considered initialized.
307
308 ### goto ###
309
310 goto <executable-name>
311
312 Unilaterally transfers execution to the given executable. Execution will not
313 be transferred back to the current routine when execution of the executable is
314 finished; rather, it will be transferred back to the caller of the current
315 routine.
316
317 If `goto` is used in a routine, it must be in tail position. That is, it
318 must be the final instruction in the routine.
319
320 Just before the goto,
321
322 * It is illegal if any of the memory locations in the target executable's
323 READS list is uninitialized.
324
325 In addition,
326
327 * The target executable's WRITES lists must not include any locations
328 that are not already included in the current routine's WRITES lists.
306329
307330 ### if ###
308331
361384
362385 After execution, dest is considered initialized, and `z` and `n`, and
363386 `a` are considered uninitialized.
364
365 ### goto ###
366
367 TBW
368387
369388 Grammar
370389 -------