Inspiration
We wanted to challenge ourselves, to understand computers at the most fundamental level, and to learn how to build something hard together as a team.
What it does
Assemblr is a helpful visualization tool that runs your assembly code on a CPU built in C and animates every instruction cycle by cycle.
How we built it
We wrote the assembler in C, with a lexer, parser and code generator that turns assembly into machine code. A CPU emulator - also in C - reads the binary, performs the correct operations with the provided operands, and emits CPU state as a JSON object. A Java program bridges the gap between the frontend and backend, running user input through the assembler and emulator. It then returns the JSON object representation of the CPU states throughout each cycle and provides it to the website, which we built with HTML, CSS and JavaScript to animate each instruction on an SVG circuit board.
Challenges we ran into
- Version control with various people working in a high-intensity fast-paced environment
- Architecting communications between the front and backend
Accomplishments that we're proud of
- Working together as a team to create an intricate low-level project
What we learned
- How CPUs actually execute RV32I binaries
- Architecting representational models of abstract concepts for visualization ## What's next for Assemblr
- More instructions supported by the assembler
- VGA buffer inspired frontend monitor for graphical programming
Log in or sign up for Devpost to join the conversation.