File Structure of Vondel

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

vondel
├── Cargo.lock
├── Cargo.toml
├── docs
│  ├── book.toml
│  ├── diagrams
│  └── src
├── LICENSE
├── programs
│  ├── csw.asm
│  ├── div.asm
│  ├── div_hardware.asm
│  ├── factorial.asm
│  ├── factorial_hardware.asm
│  ├── power.asm
│  └── power_hardware.asm
├── README.md
└── src
   ├── assembler
   ├── assembler.rs
   ├── bin
   ├── inter
   ├── inter.rs
   ├── lib.rs
   ├── main.rs
   └── uarch

Comparision with the Proposed File Structure

The main difference between our project and the proposed one it's the amount of complexity.

For example, our assembler has it's own folder, where each step has it's own file, instead of a single file to handle lexing, parsing and enconding.

Our memory, alu, clock and computer are on a single module called uarch, this module contains all the business logic for handling instructions.

The disk module was embedded on both uarch and assembler, that are on the bin folder.

Docs

The place where all documentation of this program lives

Here we split chapters into folders where mdbook, the software responsible for this site, can generate it for us automatically

src
├── assembler
│  ├── comparision.md
│  ├── evaluator.md
│  ├── lexer.md
│  ├── parser.md
│  ├── README.md
│  └── specs.md
├── chapter_1.md
├── files.md
├── interpreter
│  ├── environment.md
│  ├── evaluator
│  ├── language.md
│  ├── lexer.md
│  ├── object.md
│  ├── parser.md
│  └── README.md
├── README.md
├── SUMMARY.md
└── uarch
   ├── implementations.md
   ├── README.md
   └── uinstruction.md

Programs

The place where lives all of our assembly code for this lecture.

The ones that has _hardware implements functions that are built on hardware on the uarch, so they are faster than iteractive versions.

.
├── csw.asm
├── div.asm
├── div_hardware.asm
├── factorial.asm
├── factorial_hardware.asm
├── power.asm
└── power_hardware.asm

Src

The source code for generating our interpreter, assembler and uarch

Each module has a unique folder that has all files for creating a library crate.

The bin folder is responsible for creating our binaries that will be executed on someone's PC

.
├── assembler
│  ├── cli.rs
│  ├── evaluator.rs
│  ├── lexer.rs
│  ├── parser.rs
│  ├── sections.rs
│  └── tokens.rs
├── assembler.rs
├── bin
│  ├── assembler.rs
│  ├── interpreter.rs
│  └── uarch.rs
├── inter
│  ├── ast
│  ├── ast.rs
│  ├── cli.rs
│  ├── doc
│  ├── environment.rs
│  ├── evaluator
│  ├── evaluator.rs
│  ├── lexer.rs
│  ├── object.rs
│  ├── repl.rs
│  └── tokens.rs
├── inter.rs
├── lib.rs
├── main.rs
└── uarch
   ├── alu.rs
   ├── cli.rs
   ├── mem.rs
   └── mod.rs