Dumb8-CPU Continuing my exploration of the lower-level world… This project is the implementation of a CPU in a high-level language, C. It aims to have a reduced (minimalist) instruction set and still be Turing complete. In the future, I’d like to implement it in a hardware description language such as VHDL or Verilog. How to test You can run a test program like that. I’ll try making a developer’s manual so one can make its own programs using the custom assembly here. das is the Dumb8 Assembler, which converts .asm files to .bin CPU executables. dumb8 is the CPU emulator. make ./das program.asm ./dumb8 program.bin Technical specifications - 8-bit processing unit - RISC (reduced instruction set computer) - 8 general purpose registers (labeled Rx) - 1 input port, 1 output port (via getchar and putchar) - Turing-completeness: bitwise and arithmetic operations Instruction set reference (for programmers) ; Move register RY to register RX MOV RX, RY ; Put value X in register RX PUT RX, X ; Arithmetic operations. Result stored in RX ADD RX, RY SUB RX, RY MUL RX, RY DIV RX, RY ; Bitwise operations stored in RX OR RX, RY AND RX, RY XOR RX, RY ; Output RX to screen OUT RX ; Input RX from keyboard IN RX ; Jump to memory offset ADDR (decimal) JMP ADDR ; Jump to memory offset ADDR (decimal) if equal flag is set by previous comparison JEQ ADDR ; Compare RX and RY, sets equal flag if true CMP RX, RY ; No operation; does nothing NOP ; Halts the processing unit HLT Known bugs - If you find one, please contact me. Contributions are highly appreciated!