got my little virtual CPU to a baseline state of having instructions that can be assembled from text and executed. now we get to the interesting parts... #theFurnace
1. is it interesting to have access to a third stack on a stack machine? what about if instead of a third stack, it was a queue? does this open interesting new doors for elegant assembly code, or is it just unnecessary hardware/instruction complexity that could just be some functions instead?
2. what if we used unused machine code bytes for assembly syntax? is it possible to build an instruction set that also makes room for assembly niceties, removing the need for a separate "textual" assembly? so that you could share executable binaries that also allow for editing without loss of "programmer" context (and thus, removing the size overhead of a text encoding)?
@neauoire honestly, I have a *ton* of unused opcodes so there should be plenty of room to try lots of cool little things like this. I think I ended up with ~180/256 utilized, it definitely really made me appreciate the elegance in uxn’s design, especially when it came to looking for an optimal layout for decoding the instructions… 😅
I've been working on expanding my assembly language, both in terms of design and also implementation. The language borrows from forth, but splits between callable routines and somewhat powerful macros that allow label parameters for hopefully very readable but very reusable code segments.
It is almost completely assembling, but I'm working to unravel the mess of text and semantic parsing... #theFurnace
@neauoire the working title has been “co” since that’s the prefix of the names of every component of the larger systems, and this is the lowest level unit. not sure if it will stick around, but that’s what i refer to it as for now 😅
While implementing the final pass of this assembler, I realized that what I have so far is sort of a "higher order" assembly language, only capable of defining routine and macro symbols. It wouldn't be much additional work at all to get this to the point where it could output an actual executable memory layout, but I guess this is what happens when you try to create an assembly language without having spent much time writing assembly beforehand...
Been super busy lately, but still chipping away at this little language in bits and pieces. Decided to jump the gun a little bit and add support for namespaces and imports now, since sharing code and resolving names/hashes will be a huge component of its utility. Starting to get pretty excited about how this will all come together... #theFurnace
Devine Lu Linvega
in reply to jakintosh • • •jakintosh
in reply to jakintosh • • •jakintosh
in reply to jakintosh • • •jakintosh
in reply to jakintosh • • •Devine Lu Linvega
in reply to jakintosh • • •jakintosh
in reply to Devine Lu Linvega • • •jakintosh
in reply to jakintosh • • •It is almost completely assembling, but I'm working to unravel the mess of text and semantic parsing... #theFurnace
Devine Lu Linvega
in reply to jakintosh • • •jakintosh
in reply to Devine Lu Linvega • • •jakintosh
in reply to jakintosh • • •jakintosh
in reply to jakintosh • • •Devine Lu Linvega
in reply to jakintosh • • •