Split up into pim-os, pim-vm and pim-isa crate

This commit is contained in:
2023-11-28 20:41:09 +01:00
parent 8f1c43defd
commit 54bf6bda11
22 changed files with 1078 additions and 109 deletions

65
pim-isa/Cargo.lock generated Normal file
View File

@@ -0,0 +1,65 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "pim-isa"
version = "0.1.0"
dependencies = [
"serde",
]
[[package]]
name = "proc-macro2"
version = "1.0.70"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
dependencies = [
"proc-macro2",
]
[[package]]
name = "serde"
version = "1.0.193"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.193"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "syn"
version = "2.0.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "unicode-ident"
version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"

11
pim-isa/Cargo.toml Normal file
View File

@@ -0,0 +1,11 @@
[package]
name = "pim-isa"
version = "0.1.0"
edition = "2021"
[features]
default = ["std"]
std = []
[dependencies]
serde = { version = "1.0", default-features = false, features = ["derive"] }

40
pim-isa/src/lib.rs Normal file
View File

@@ -0,0 +1,40 @@
#![cfg_attr(not(feature = "std"), no_std)]
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, Serialize, Deserialize)]
pub enum Instruction {
NOP,
EXIT,
JUMP { offset: i16, count: u16 },
MOV { src: File, dst: File },
FILL { src: File, dst: File },
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub enum File {
Grf { index: u8 },
SrfM { index: u8 },
SrfA { index: u8 },
Bank,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Kernel(pub [Instruction; 32]);
impl Kernel {
pub const NOP: Kernel = Kernel([Instruction::NOP; 32]);
}
#[derive(Debug, Serialize, Deserialize)]
pub struct PimConfig {
pub bank_mode: BankMode,
pub kernel: Kernel,
}
#[derive(Debug, Serialize, Deserialize)]
pub enum BankMode {
SingleBank,
AllBank,
PimAllBank,
}