Processor
A compiler, assembler, and processor.
Install / Use
/learn @bcrafton/ProcessorREADME
This project is currently on pause because I have started graduate school</br> I am not sure if I will come back to it</br> The latest code are on branches ooo, ooo1, ooo2.</br>
Compiler - Assembler - Processor
This repository implements a compiler, assembler and a processor.
Compiler
OCaml.</br> Most of code taken from Northeastern compilers course.</br> Compiles to x86.
Assembler
Ocaml.</br> Coverts x86 to a RISC ISA and assembles to binary.
Processor
Verilog.</br> Implements a RISC ISA capable of running all instructions generated by assembler.
Test Bench
C - Verilog Programming Interface.</br> Simulates instruction memory, data memory, and registers.</br> Runs through different types of tests:
- Binary tests - binary code. and checks to make sure main memory and registers are the same as expected
- Assembly Tests - x86 assembly code. tests only the final result in eax.
- Code Tests - abstract code. tests only the final result in eax.
Running the code
There is a dependency script that may or may not work for getting the dependencies.</br> Once these are acquired, the makefile can be run which will compile all four modules and run the test bench.
Future Features
- Super scalar :+1:
- Performance metrics (branch misses, IPC, instruction histograms, stalls) :+1:
- Branch predictor :+1:
- Compiler - Tuples :+1:
- Emulator :+1:
- Instruction Logs :+1:
- Out of order
- Memory simulator (cache / memory heirarchy with random latency)
- Combining instruction memory and data memory
