A highly visual assembly editor, infinite canvas for wiring blocks and machines together, bytecode virtual machine runnable natively and on WebAssembly, and a command-line bytecode compiler.
See my journal of design decisions and daily progress in my digital garden page.
From Opcodes to Algorithms is my 100-day project to implement the most basic build blocks such as memory management, registers, assembly-like instruction sets, compilers, interpreters, up to data structures, algorithms, all the way up to working programs. Maybe even operating systems and neural networks in the future.Let's build it all from scratch in Rust, building one on top of another!
- Linear Memory
- Registers (PC, SP)
- Instruction: PUSH
- Instruction: POP
- Fetch-Decode-Execute Cycle
- Instruction: DUP, SWAP, OVER
- Instruction: INC, DEC
- Instruction: ADD, SUB, MUL, DIV
- Instruction: JUMP, JUMP_ZERO, JUMP_NOT_ZERO
- Instruction: HALT
- Instruction: LOAD, STORE
- Char
- String
- Hello World
- Simple Call Stack
- Instruction: CALL, RETURN
- Scanner and Parser
- Assembler
- Bytecode Compiler
- Command Line Compiler/Interpreter
- Node-based Visual Editor
- Actor Model, Mailboxes and Machine Queues
- Native Orchestrator
- WebAssembly-based Orchestrator using Actor Model
- Basic Run and Step
- Palindrome
- Array
- ArrayList
- Linked List
- Doubly Linked List
- Ring Buffer
- Graph
- Depth-First Search
- Breadth-First Search
- Binary Tree
- Binary Search Tree