Vondel

Build Status Issues Pull requests License

A simple computer architecture, ISA, Assembler and Interpreter build with Rust.

Usage

First off all, we need to build our binaries using:

cargo build -r --bins

Then for testing the demonstration programs we need to assemble it and run with our uarch.

We can accomplish this by just using the following commands:

Running Factorial

cargo run -r --bin assembler -- -i programs/factorial_hardware.asm && \
cargo run -r --bin uarch -- --rom a.rom --ram a.ram

Running Power

cargo run -r --bin assembler -- -i programs/power_hardware.asm && \
cargo run -r --bin uarch -- --rom a.rom --ram a.ram

Running CSW

cargo run -r --bin assembler -- -i programs/csw.asm && \
cargo run -r --bin uarch -- --rom a.rom --ram a.ram

Running Div

cargo run -r --bin assembler -- -i programs/div_hardware.asm && \
cargo run -r --bin uarch -- --rom a.rom --ram a.ram

File Structure

The Vondel file structure follows a convetional Rust program, with a src folder that handles all of our source code.

More info on the chapter File Structure

Interpreter

The Vondel Interpreter was built on top of the Monkey Language using the book Writing an Interpreter with GO but on Rust.

More info on the chapter Interpreter

Assembler

The Vondel Assembler was based on RISC V assemblers with our custom taste for Mnemonics and operations that our Uarch can accept

More info on the chapter Assembler

Microarchitecture

The basic idea behind Vondel's design is to follow some tips from the book Structured Computer Organization - Andrew S. Tanenbaum while implementing the ability to perform operations even if the main clock is in a non-edge level in order to reduce clock cycles.

More info on the chapter Microarchitecture