To help hone my skills with low-level programming--specifically machine code generation, working with assembly, and object file formats--I designed a full-stack RISC-V disassembler and translator. The program will read a Linux ELF file using custom parsing logic, disassemble the instructions from the text section, and translate them to valid C code. That C code can then be compiled to achieve the same functionality as the input compiled code.
You can find the source code for this project here:
https://github.com/brenfwd/riscy
I created Remoji in 2020 during the COVID-19 lockdown as a basic integration for the Discord chat platform. It was originally to solve a niche problem I had with managing and creating custom emojis on Discord. Over time, Remoji grew into an enormous success, with over 200,000 installations and millions of active users.
The unexpected success of Remoji prompted several rewrites and performance improvements over the years. Most recently, I completely refactored Remoji using asynchronous Rust code and a distributed architecture to help scale seamlessly.
You can find out more about Remoji here:
https://remoji.app/
In my compilers course at the University of Michigan, I had the opportunity to create my own LLVM-based compiler using OCaml, designed to compile a C-like language to X86 machine code. In the assignment, we were given the freedom to design our own register allocation algorithm. The algorithm I developed uses a heuristic-based graph coloring approach, incorporating a preferences-first selection methodology. This algorithm not only outperformed the baseline greedy allocation algorithm, but achieved the top performance out of all allocators in the class.
Due to this being a class project, the source code is not available; however, I have included a small snippet of my graph coloring algorithm (pictured) which does not compromise the project integrity, since the project specification has changeed drastically since I took it.