> For the complete documentation index, see [llms.txt](https://maru-2.gitbook.io/maru/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://maru-2.gitbook.io/maru/maru-zkvm/instruction-set-architecture/instruction-set.md).

# Instruction set

We have the following 20 instructions on our instruction set. There are 4 purely arithmetic ones, mov, 3 call variants, ret, 10 unconditional jump instructions, 1 conditional jump instruction. Instructions and effects are listed in a table below.

<figure><img src="https://3339352739-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FodO5JlqleNX4RzpA1ZUc%2Fuploads%2FWXSAxvNECqFe7FZ7C6KX%2Finstruction_set.jpg?alt=media&amp;token=8cdbf30b-c364-494c-908f-a2172b9fcd7b" alt=""><figcaption><p>Instruction set</p></figcaption></figure>

Instruction set can be augmented with **peripherals** - built in commonly used in domain subroutines acting as memory-mapped IO with peripheral devices. We implemented Keccak256 in a zk-friendly manner to facilitate interactions with Ethereum blockchain and used this implementation as one of peripherals. Other zk-friendly native implementations would follow soon.
