Thanks for that link. I'm sure I've looked at MIPS before and it may well have unconsciously influenced me, or it may be a case of converging evolution, but I use the three register design much like MIPS does. However, mine is much smaller, essentially only six "ALU" instructions D = S op T for op in AND, OR, XOR, ADD, SUB, ASR along with PUSH and POP. Given the simplicity of my set I can start from anywhere and cut it down, in fact I'm thinking about cutting down TCC x86_64 to what I use in order to learn how to port TCC.
I liked the challenge of implementing my own instruction set. It turned out to be quite similar to a subset of ARM, so it may also be similar to a subset of MIPS (I haven't checked).
I'm experimenting with names. You'll see a write up where I minimise the number of legs, i.e. solder joints you have to make. That seemed like a very good metric. But then I found myself discussing everything in terms of the transistor count, so I'm favouring min-T right now. Passive components like resistors and didoes you can see what they do from looking at them. Transistors are much harder to work out what they are going to do. Other name suggestions are welcome.
8 bit and 4 bit CPUs are horrible things to teach. By being 16 bits throughout you can do many high level things in one instruction. It also makes for an efficient FORTH implementation.
Yes, I did consider implementing a simpler processor that ran a bit sliced ALU. I decided against it because registers are needed to see how the processor works (how it fetches and stores instructions, how the PC controls flow, how you can read in and out of memory using registers, how the ALU operates on registers). The original designs used a 1 bit ALU, then I decided that this wasn't intuitive, it would be a better learning experience and not many more transistors to have a 16 bit ALU.