openvm_rv32im_guest/
lib.rs1#![no_std]
2extern crate alloc;
3
4#[cfg(target_os = "zkvm")]
6mod io;
7
8#[cfg(target_os = "zkvm")]
9pub use io::*;
10use strum_macros::FromRepr;
11
12pub const SYSTEM_OPCODE: u8 = 0x0b;
14pub const CSR_OPCODE: u8 = 0b1110011;
15pub const RV32_ALU_OPCODE: u8 = 0b0110011;
16pub const RV32M_FUNCT7: u8 = 0x01;
17
18pub const TERMINATE_FUNCT3: u8 = 0b000;
19pub const HINT_FUNCT3: u8 = 0b001;
20pub const HINT_STOREW_IMM: u32 = 0;
21pub const HINT_BUFFER_IMM: u32 = 1;
22pub const REVEAL_FUNCT3: u8 = 0b010;
23pub const PHANTOM_FUNCT3: u8 = 0b011;
24pub const CSRRW_FUNCT3: u8 = 0b001;
25
26pub const MAX_HINT_BUFFER_WORDS_BITS: usize = 10;
32pub const MAX_HINT_BUFFER_WORDS: usize = (1 << MAX_HINT_BUFFER_WORDS_BITS) - 1; #[derive(Debug, Copy, Clone, PartialEq, Eq, FromRepr)]
38#[repr(u16)]
39pub enum PhantomImm {
40 HintInput = 0,
41 PrintStr,
42 HintRandom,
43}