Since my work with Del for the NablaVM I decided to take a different approach to code generation with a project that I named Umbra. I named it that just because I needed a name and its the first thing that came to mind.
The new approach I took was trying to come up with various code blocks (of nasm) that would do higher-order actions. So far its worked really well. I don't know if I'll continue working on Umbra, as I'm starting to see the limits that using the Nabla system imposes.
Primarily, the defining feature of asm functions really throws a wrench into things. The idea of memory/ instruction separation.. or at least my implementation of it causes the creation of things like recursion and references to be extremely cumbersome and difficult to implement. Now it is possible that my limited knowledge of asm generation is whats causing these walls to come up, but either way, the walls are there.
With this new approach I was able to get basic structures and arrays built, along with expression calculation and all of the standard calling conventions, but references... I just don't know how to handle that while conforming to the separation or 'instancing' of data that the whole project attempts to accomplish. If you have a function and want to pass a reference from, well, you just can't. Not without violating the whole purpose of the Nabla system. A reference would allow an outside actor access to your data. The only way would be through constant copying and updating copies.. which is a lot of data movement and writing, causing things to be quite slow.
Currently, I am debating if I should push ahead knowing that the end result will be bulky and gross, or if I should let the horse be.