Skip to main content

zkvmc_interpreter/
lib.rs

1mod backend;
2
3use backend::Interpreter;
4use zkvmc_context::Context;
5use zkvmc_frontend::Frontend;
6
7pub fn run<FE, const DEBUG: bool>(ctx: &mut Context) -> u32
8where
9    FE: for<'a> Frontend<Interpreter<'a, DEBUG>>,
10{
11    let mut interpreter = Interpreter::new(ctx);
12
13    loop {
14        FE::translate_one(&mut interpreter);
15        if let Some(code) = interpreter.ctx.exit_code {
16            return code;
17        }
18        interpreter.ctx.update_pc();
19    }
20}