ckb-debugger 1.1.1

Standalone debugger for Nervos CKB
Documentation
use ckb_vm::{
    Error, Register, SupportMachine, Syscalls,
    registers::{A0, A7},
};

pub struct Random {}

impl Random {
    pub fn new() -> Self {
        Self {}
    }
}

impl<Mac: SupportMachine> Syscalls<Mac> for Random {
    fn initialize(&mut self, _machine: &mut Mac) -> Result<(), Error> {
        Ok(())
    }

    fn ecall(&mut self, machine: &mut Mac) -> Result<bool, Error> {
        let id = machine.registers()[A7].to_u64();
        if id != 9002 {
            return Ok(false);
        }
        let r = crate::arch::random();
        machine.set_register(A0, Mac::REG::from_u64(r));
        return Ok(true);
    }
}