In certain situations, control flow instructions unexpectedly terminate execution without warning.
Functional example:
1 .data
2 .text
3 main:
4 b foo
5 foo:
6 nop
7 done
Program foo.s completed successfully. Executed in 3
cycles (0.3s)
Non-functional example:
1 .data
2 .text
3 foo:
4 nop
5 done
6 main:
7 b foo
Program foo.s completed successfully. Executed in 2
cycles (0.3s)
Note that the two examples are identical except that lines 3-4 in the functional example are floated down to lines 6-7 in the non-functional example. This modification in theory does not alter program flow. However, in the non-functional example, execution terminates at line 7 and line 4 is never executed.