SkillAgentSearch skills...

Processor

A compiler, assembler, and processor.

Install / Use

/learn @bcrafton/Processor

README

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:

  1. Binary tests - binary code. and checks to make sure main memory and registers are the same as expected
  2. Assembly Tests - x86 assembly code. tests only the final result in eax.
  3. 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

  1. Super scalar :+1:
  2. Performance metrics (branch misses, IPC, instruction histograms, stalls) :+1:
  3. Branch predictor :+1:
  4. Compiler - Tuples :+1:
  5. Emulator :+1:
  6. Instruction Logs :+1:
  7. Out of order
  8. Memory simulator (cache / memory heirarchy with random latency)
  9. Combining instruction memory and data memory
View on GitHub
GitHub Stars24
CategoryDevelopment
Updated4y ago
Forks6

Languages

OCaml

Security Score

65/100

Audited on Nov 25, 2021

No findings