diff --git a/src/cpu/kernel/assembler.rs b/src/cpu/kernel/assembler.rs new file mode 100644 index 00000000..1fc3185a --- /dev/null +++ b/src/cpu/kernel/assembler.rs @@ -0,0 +1,6 @@ +use crate::cpu::generation::MipsTrace; +#[derive(PartialEq, Eq, Debug, Serialize, Deserialize)] +pub struct Kernel { + pub(crate) code: Vec, +} + diff --git a/src/generation/state.rs b/src/generation/state.rs new file mode 100644 index 00000000..3daae3c7 --- /dev/null +++ b/src/generation/state.rs @@ -0,0 +1,21 @@ +use std::collections::HashMap; + +use ethereum_types::{Address, BigEndianHash, H160, H256, U256}; +use keccak_hash::keccak; +use plonky2::field::types::Field; + +use crate::cpu::kernel::aggregator::KERNEL; +use crate::cpu::kernel::constants::context_metadata::ContextMetadata; +use crate::generation::mpt::all_mpt_prover_inputs_reversed; +use crate::generation::rlp::all_rlp_prover_inputs_reversed; +use crate::generation::GenerationInputs; +use crate::memory::segments::Segment; +use crate::witness::errors::ProgramError; +use crate::witness::memory::{MemoryAddress, MemoryState}; +use crate::witness::state::RegistersState; +use crate::witness::traces::{TraceCheckpoint, Traces}; + +pub(crate) struct GenerationState { + pub(crate) inputs: GenerationInputs, + pub(crate) traces: Traces, +} diff --git a/src/witness/state.rs b/src/witness/state.rs new file mode 100644 index 00000000..5331dc5d --- /dev/null +++ b/src/witness/state.rs @@ -0,0 +1,31 @@ +use crate::cpu::kernel::aggregator::KERNEL; + +const KERNEL_CONTEXT: usize = 0; + +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub struct RegistersState { + pub program_counter: usize, + pub is_kernel: bool, + pub context: usize, +} + +impl RegistersState { + pub(crate) fn code_context(&self) -> usize { + if self.is_kernel { + KERNEL_CONTEXT + } else { + self.context + } + } +} + +impl Default for RegistersState { + fn default() -> Self { + Self { + // FIXME: fill in pc + program_counter: 0, + is_kernel: true, + context: 0, + } + } +}