Skip to content

Commit cfd719c

Browse files
committed
Fixes #8: completely rewrote instruction decoding and execution, handle compressed natively
The decoder is generated by gendecoder; run ``` cargo r -p gendecoder --bin gendecoder > tmp;mv tmp src/generated_riscv_decoder.rs ``` when adding new instructions. (We skipped build.rs as changes are expected to be very rare). Also hundreds of tiny adjustments and improvements
1 parent b15a60e commit cfd719c

File tree

11 files changed

+4197
-2702
lines changed

11 files changed

+4197
-2702
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ exclude = [
1515

1616
[workspace]
1717
resolver = "3"
18-
members = [".", "sim", "wasm"]
18+
members = [".", "sim", "gendecoder", "wasm"]
1919
default-members = ["sim"]
2020

2121
[lints.clippy]

gendecoder/Cargo.toml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[package]
2+
name = "gendecoder"
3+
version = "0.1.0"
4+
edition = "2024"
5+
6+
[dependencies]
7+
anyhow = "1.0.100"
8+
argh = "0.1.13"
9+
env_logger = "0.11.8"
10+
libc = "0.2.176"
11+
simmerv = { path = ".." }
12+
termios = "0.3.3"
13+
zstd = "0.13.3"

gendecoder/src/main.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
use simmerv::riscv_insns::generate_riscv_decoder;
2+
3+
fn main() -> anyhow::Result<()> {
4+
generate_riscv_decoder();
5+
6+
Ok(())
7+
}

0 commit comments

Comments
 (0)