mod ram;
mod rom;
pub(crate) use {ram::add_ram_checking, rom::add_rom_checking};
#[derive(Debug, Clone)]
pub enum MemoryOperation {
Load(usize, usize),
Store(usize, usize),
}
#[derive(Debug, Clone)]
pub struct MemoryBlock {
pub initial_value_witnesses: Vec<usize>,
pub operations: Vec<MemoryOperation>,
}
impl MemoryBlock {
pub fn new() -> Self {
Self {
initial_value_witnesses: vec![],
operations: vec![],
}
}
pub fn is_read_only(&self) -> bool {
self.operations.iter().all(|op| match op {
MemoryOperation::Load(..) => true,
MemoryOperation::Store(..) => false,
})
}
}