From b95c01116a88f2660118fdf9bb907fcd6a1d441c Mon Sep 17 00:00:00 2001 From: raphy Date: Mon, 12 Feb 2024 21:10:36 +0100 Subject: [PATCH] added readme, made program installable --- Cargo.toml | 3 +++ README.md | 31 +++++++++++++++++++++++++++++++ spec.md | 4 +--- 3 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 README.md diff --git a/Cargo.toml b/Cargo.toml index 9a74643..63f56d9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,3 +9,6 @@ edition = "2021" clap = { version = "4.4.8", features = ["derive"] } log = "0.4" simple_logger = "4.2.0" + +[[bin]] +name = "dekejit" diff --git a/README.md b/README.md new file mode 100644 index 0000000..6a8e806 --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# DEKEJIT + +## EXPERIMENTAL!! NOTHING WORKS AND MAKES SENSE!!! + +This is an experimental 16-bit virtual machine. + +A lenghty description can be found [here.](spec.md) + +If you want to have a great time, you can try experimenting with it: + +### Installation + +Clone this repository, and run "cargo build". + +This currently builds the virtual machine, which can execute binary files, and an assembler which can turn text files into binary files. + +To install the program, run `cargo install --path .` . + +### Usage + +`dekejit build ` will read the provided `` and write a binary file `` which can be executed using `dekejit run ` + +A few example files can be found in `tests/assembly/`. + + +### Future + +Right now the only possible way to use the virtual machine is to manually write the assembly. +In the future, small compilers for toy languages will be built that target my toy assembly. + + diff --git a/spec.md b/spec.md index 37d3c4b..379a80d 100644 --- a/spec.md +++ b/spec.md @@ -91,9 +91,7 @@ The constant is added to the value of the second register argument. ### JIT's system calls: -the `CALL` instruction is a bit of a hack because I want to load more functionality into the thing. -The JIT can decide what to do with the register s0 and the number c. -It should be possible to open files, write files, read stdin, write to stdout, etc... +What the `CALL` instruction does is up to implementations. The JIT can decide what to do with the register s0 and the number c. It could provide mechanisms to perform I/O on a true filesystem, on an emulated filesystem, or it could do something else entirely, i.e, something web related. #### io\_vec: first systemcall environment