Website Summary Files Commits Branches @commit @diff @stats
AgeCommit messageAuthorLinesSHA
2025-03-20feat: Demo video and accompanying example assembly HEAD main
 Syndamia Verified
-0/+49c1c2a97
2025-02-16feat: Add rough documentation
 Syndamia Verified
-73/+175bb8c3f0
2025-02-15feat: Document args
 Syndamia Verified
-1/+8ba21ce6
[...]
 
 
Clone
https://git.syndamia.com/edu/FMI/tonkobali
git@syndamia.com:edu/FMI/tonkobali
 
BranchAge
main20 months
NameSize
.gitignore13 Blog stats plain blame
Cargo.lock6.7 KiBlog stats plain blame
Cargo.toml63 Blog stats plain blame
README.md2.0 KiBlog stats plain blame
assembler105 Blog stats plain
detailed_demo.mp42.8 MiBlog stats plain blame
examples222 Blog stats plain
flake.lock564 Blog stats plain blame
flake.nix751 Blog stats plain blame
vm105 Blog stats plain

tonkobali

Rust project for the Programming with Rust elective at FMI.

This is a small SUBLEQ-based virtual machine and assembler for it. More information can be found in the READMEs of the appropriate crates. Some example programs are provided in examples.

Detailed demo

Usage

Install cargo on your system. For Nix-capable machines you may get an environment with everything you need with:

nix develop

To assemble and then execute the math.s program just execute:

cargo run --bin assembler -- ./examples/math.s
cargo run --bin vm -- ./program.bin

Wait until you see a prompt with HALTED with red background to the left of your cursor. You're now in the interface of the virtual machine.

Then enter 1000.1001, you should get the following output:

1000:     55      1

To exit the vm enter quit.

Resources

Name

The name of this project has some logic behind it.

"SUBLEQ" can be shortened to "SL". "SL" also stands for Sierra Leone, a small african country. Sierra Leone is divided into 16 districts, the two center-most being "Tonkolili" and "Bombali".

Therefore, "tonkobali" represents the composition of the two central components inside SL. Before, the vm crate was called "tonkolili" and assembler - "bombali". These names were dropped because they were confusing.