Open marcbeunardeau88 opened 3 weeks ago
CC @dannywillems @marcbeunardeau88
I was wondering: do we want one giant selector q_MIPS
which serves as essentially the opcode for MIPS, or several smaller selectors q_leftshift
and friends that are in the range {0, 1}
.
Or, is the selector something more clever than what I'm initially thinking of? For example, it might be possible to construct Z
such that
Z(g^i, x) = MIPS_instruction(i)(x)
By using the same trick in Section 5 of PlonK.
The current desgin of the o1vm is one circuit per MIPS instructions. We want to change that and get one big circuit which does all the instruction depending on which selector is activated.
We need to add ‘selectors’ for (see kimchi and/or the original zkVM prototype, the plonk paper for the concept), and multiplex the instructions using those. The original zkVM is probably the best guide for this, this is how it originally worked.