MIPS Assembly Programming with QtSPIM

This project focused on developing a strong foundation in MIPS assembly language using the QtSPIM simulator, with an emphasis on understanding low-level program execution, control flow, and memory operations. Initial tasks introduced core assembly concepts such as loops, register usage, and memory access by modifying and analyzing provided MIPS programs. These included copying data between memory locations and implementing string-processing logic, which helped build familiarity with QtSPIM’s debugging tools and execution model. A key component of this phase was the implementation of a palindrome checker, which required writing custom subroutines, handling user input, managing string boundaries, and performing character-by-character comparisons entirely in assembly language.

The project then progressed to more advanced MIPS programming concepts, including recursive function calls, stack management, and memory-mapped I/O. A recursive Fibonacci subroutine was implemented, requiring careful preservation of registers, stack frame allocation, and correct handling of base cases and return values. Additionally, standard system calls for input and output were replaced with memory-mapped I/O routines, demonstrating direct interaction with hardware-mapped registers by polling control bits and safely transmitting data. Together, these tasks reinforced a deep understanding of processor-level execution, calling conventions, and low-level I/O mechanisms, making this project a strong demonstration of competency in computer architecture and assembly-level programming.

Project Report: View full MIPS Assembly Report (PDF)