A silly little instruction set architechture.
- 16-bit registers, 16-bit address space
- Fixed-size 16-bit instructions
- Boolean stack operations (via bit shifting)
- Powerful enough to implement an operating system (this basically rules out a Harvard architecture afaik)
- Run programs on an FPGA. I'd like to generate HDL code and get the machine actually instantiated on real hardware.
- Have some support for microcontoller use cases
- Prioritize an easy-to-use design for the assembly language (from the perspective of an assembly programmer or, secondarily, a compiler)
I've tried to automate the ISA design process as much as possible by defining the spec in Prolog because:
- Code is (hopefully) more consistent. Changes should automatically propagate throughout the design.
- Design decisions are less arbitrary. You can see where I'm using an algorithm to make a decision, and hopefullly where decisions are made arbitrarily.
- Prolog is fun to write, and is well suited to data modelling. I had been using spreadsheets, but I ran into enough issues and limitations that I decided to switch technologies.
To build the documentation you'll need:
- A bash-like shell (I have
GNU bash, version 5.2.15(1)-release (x86_64-pc-msys)) - SWI Prolog (I'm using
SWI-Prolog version 9.0.4 for x64-win64) - GraphViz (On my system the command is called
dot:graphviz version 12.2.1 (20241206.2353))
Then to build, run build.sh:
sh build.sh