#pragma once
#include "risc0/zkvm/prove/step.h"
#include <string>
#include <vector>
namespace risc0 {
struct ExecState {
ExecState(const std::string& elfFile);
void run(size_t maxSteps, MemoryHandler& io);
void init(size_t maxSteps, MemoryHandler& io);
bool step();
void fini();
uint32_t getPC();
std::vector<uint32_t> getRegisters();
void expand();
uint32_t startAddr;
std::map<uint32_t, uint32_t> image;
StepContext context;
std::vector<Fp> code;
std::vector<Fp> data;
size_t maxSteps;
bool done;
};
}