Skip to main content

sp1_recursion_machine/chips/mem/
mod.rs

1pub mod constant;
2pub mod variable;
3
4pub use constant::MemoryConstChip;
5use sp1_recursion_executor::Address;
6pub use variable::MemoryVarChip;
7
8use sp1_derive::AlignedBorrow;
9
10pub const NUM_MEM_ACCESS_COLS: usize = core::mem::size_of::<MemoryAccessCols<u8>>();
11
12/// Data describing in what manner to access a particular memory block.
13#[derive(AlignedBorrow, Debug, Clone, Copy)]
14#[repr(C)]
15pub struct MemoryAccessColsChips<F: Copy> {
16    /// The address to access.
17    pub addr: Address<F>,
18    /// The multiplicity which to read/write.
19    /// "Positive" values indicate a write, and "negative" values indicate a read.
20    pub mult: F,
21}
22
23/// Avoids cbindgen naming collisions.
24pub type MemoryAccessCols<F> = MemoryAccessColsChips<F>;