ckb_vm::machine

Trait CoreMachine

Source
pub trait CoreMachine {
    type REG: Register;
    type MEM: Memory<REG = Self::REG>;

    // Required methods
    fn pc(&self) -> &Self::REG;
    fn update_pc(&mut self, pc: Self::REG);
    fn commit_pc(&mut self);
    fn memory(&self) -> &Self::MEM;
    fn memory_mut(&mut self) -> &mut Self::MEM;
    fn registers(&self) -> &[Self::REG];
    fn set_register(&mut self, idx: usize, value: Self::REG);
    fn version(&self) -> u32;
    fn isa(&self) -> u8;
}
Expand description

This is the core part of RISC-V that only deals with data part, it is extracted from Machine so we can handle lifetime logic in dynamic syscall support.

Required Associated Types§

Source

type REG: Register

Source

type MEM: Memory<REG = Self::REG>

Required Methods§

Source

fn pc(&self) -> &Self::REG

Source

fn update_pc(&mut self, pc: Self::REG)

Source

fn commit_pc(&mut self)

Source

fn memory(&self) -> &Self::MEM

Source

fn memory_mut(&mut self) -> &mut Self::MEM

Source

fn registers(&self) -> &[Self::REG]

Source

fn set_register(&mut self, idx: usize, value: Self::REG)

Source

fn version(&self) -> u32

Source

fn isa(&self) -> u8

Implementors§

Source§

impl<Inner: CoreMachine> CoreMachine for DefaultMachine<Inner>

Source§

type REG = <Inner as CoreMachine>::REG

Source§

type MEM = <Inner as CoreMachine>::MEM

Source§

impl<Inner: SupportMachine> CoreMachine for TraceMachine<Inner>

Source§

type REG = <Inner as CoreMachine>::REG

Source§

type MEM = <Inner as CoreMachine>::MEM

Source§

impl<R: Register, M: Memory<REG = R>> CoreMachine for DefaultCoreMachine<R, M>

Source§

type REG = R

Source§

type MEM = M