>>73298189I was thinking about how to add a few features and I realized that conditional jumps are more limited than I thought.
Originally, a conditional would skip one instruction if the guard didn't pass the check, but that means that to avoid executing the "else branch" the instruction immediately after the guard has to be a jump.
I simplified it so that conditionals take a label to jump to if the condition is true, saving one operation which can be costly depending on the implementation.
I realized that either approaches are bad when I was designing a way to create reusable subroutines ("function calls"): the plan is to allow "free text labels" which do not count as LBL instructions and therefore do not require taking a fixed label number, so that it can be possible to include a generic piece of code inside multiple projects without having to manually edit its label every time. The problem is that if this piece of code has some conditionals, those labels end up being registered in the "global" space, meaning that if two routines do "EQL 0" then the program will inevitably have a bug.
There are various ways to fix this, the easiest one is to allow textual labels for all control flows (there is enough space to duplicate all of them in 5 bits, eventually) and make it similar to actual assembly.
I'm looking for feedback on how to proceed; this implementation is going to go further away from "pure" AWA5.0 which is something that might stink for some people, but the ultimate goal, the apotheosis, is to make a solitaire game in AWA5 and have Jelly play it, so if I have to make these changes to the fundamental nature of the language I'll take it. This place seems to be the only one actively interested in the language, anyway, so we're free to do anything.
Apologies for the wall of text.