@tbsp I've tried writing a bit of documentation here: https://wiki.xxiivv.com/site/uxntal_lambdas.html
Do you think it's understandable?
Top-level
@tbsp I've tried writing a bit of documentation here: https://wiki.xxiivv.com/site/uxntal_lambdas.html Do you think it's understandable? 2 comments
@tbsp The way it works behind the scene is interpreting a single { as a JSI looking for a closing label called "lambdaXX". You can use runes with it like any other label, it's dynamically looking for its closing bracket. So you could do ={ }, -{ }, !{ }, etc.. C: https://git.sr.ht/~rabbits/uxn/tree/main/item/src/uxnasm.c#L195 |
@neauoire I see you've expanded it a bit since I read it last. There are still bits that go over my head, but it's clearer now.
Are lambda blocks preceded by immediate runes treated differently by the assembler than those without? The JCI case seems to insert the jump offset following the immediate opcode, whereas it sounds like the others use an immediate jump as well as push the start pointer to the return stack.