
Technologies Used:
Python
Logisim
Role: Assembler programmer & Digital Circuit-Designer
Timeline: August 2025 - December 2025
OffBrandArm CPU is an eight-bit CPU with a 2² binary representation of 4 instructions, capable of arithmetic and memory-related operations
The development process involved beginning with the circuit itself to understand how CPUs work for our Computer Architecture and Organization (CS 382) course. I began by initializing the four general-purpose registers for the CPU, to which I was then ready for the 5-stage pipeline processor: steps—Instruction Fetch (IF), Instruction Decode (ID), Execute (EX), Memory Access (MEM), and Write Back (WB). With each step, I incorporated key circuits to ensure each stage of the CPU process for an instruction was fully functional. I then began with a Python-based assembler, translating my custom ARM-inspired assembly language into machine code while supporting both register and immediate addressing modes. Lastly, I formalized my notes to create a formal documentation on how the assembler works and all possible instructions, as reflected in the Github’s README markdown file.
I successfully created a CPU that executes memory and arithmetic operations under the constraint of 8-bit instructions and only four general-purpose registers. This project taught me how building the assembler showed how software abstracts hardware complexity. Working with an 8-bit constraint required creative problem-solving: I designed X0 to serve dual purposes as both a general-purpose register and a flag for immediate values (numerical offsets of 0-255) in memory operations due to the inability to fit all possible scenarios of each instruction within the 8-bit constraint.