use serde::{Deserialize, Serialize};
use crate::runtime::Instruction;
use crate::runtime::MemoryRecordEnum;
#[derive(Debug, Copy, Clone, Serialize, Deserialize)]
pub struct CpuEvent {
pub shard: u32,
pub channel: u32,
pub clk: u32,
pub pc: u32,
pub next_pc: u32,
pub instruction: Instruction,
pub a: u32,
pub a_record: Option<MemoryRecordEnum>,
pub b: u32,
pub b_record: Option<MemoryRecordEnum>,
pub c: u32,
pub c_record: Option<MemoryRecordEnum>,
pub memory: Option<u32>,
pub memory_record: Option<MemoryRecordEnum>,
pub exit_code: u32,
pub alu_lookup_id: usize,
pub syscall_lookup_id: usize,
pub memory_add_lookup_id: usize,
pub memory_sub_lookup_id: usize,
pub branch_gt_lookup_id: usize,
pub branch_lt_lookup_id: usize,
pub branch_add_lookup_id: usize,
pub jump_jal_lookup_id: usize,
pub jump_jalr_lookup_id: usize,
pub auipc_lookup_id: usize,
}