# Jump Instructions in VM

**URL:** <https://forum.aztec.network/t/jump-instructions-in-vm/259>\
**Category:** Aztec\
**Tags:** specs\
**Created:** [May 4, 2023, 6:35pm UTC](https://forum.aztec.network/t/jump-instructions-in-vm/259 "2023-05-04T18:35:47Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![jtriley-eth](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.aztec.network/jtriley-eth/32/70_2.png) [@jtriley-eth](https://forum.aztec.network/u/jtriley-eth)\
**Post date:** [May 4, 2023, 6:35pm UTC](https://forum.aztec.network/t/jump-instructions-in-vm/259/1 "2023-05-04T18:35:47Z")

</div>

At the time of writing, the following is written in the Public VM Architecture page in the documentation.

> Q: Do we want to support JUMP/JUMPI instructions for public ACIR++ functions? Would be _very_ nice to have but creates discontinuity between public/private functions.

Can this be expanded here? How does it create discontinuity between public and private functions?

---

<div class="post-metadata">

**Author:** ![Mike](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.aztec.network/mike/32/7_2.png) [@Mike](https://forum.aztec.network/u/Mike)\
**Post date:** [May 4, 2023, 9:01pm UTC](https://forum.aztec.network/t/jump-instructions-in-vm/259/2 "2023-05-04T21:01:40Z")

</div>

Thanks for posting 🙂

Private functions are compiled into circuits, so they can’t have jump instructions (if you have an `if` statement in a circuit, both ‘branches’ of the statement get executed; there’s no “jump”). Public functions, on the other hand, are compiled to opcodes, and those opcodes are then ‘executed’ in a VM circuit. So for public functions, we can have more traditional (non-circuit) opcodes.
