Photo by [Matus Hatala](https://unsplash.com/@matushatala?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/branching?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)

Now that we have [Load-Store](https://medium.com/the-ember-project/the-ember-cpu-initial-design-part-5-load-store-and-memory-instructions-58e193078d52) and common [ALU instructions](https://medium.com/the-ember-project/the-ember-cpu-initial-design-part-4-arithmetic-logic-unit-alu-d54ff68a6134), we can add branching and jump instructions to the Ember CPU design.

## Branch Instructions

Branches are useful when you want a CPU to repeat some operations multiple times, skip over other operations, or temporarily go to a subroutine nearby in the same program or library. They can also be used to call code in a library provided by the system, or code linked together with the program at compile time.

The definitions of Jump and Branch are a bit loose, but for our case, the simplest definition is that a Branch instruction may or may not be taken, depending on various condition flags in the CC status register, where a Jump instruction will always be taken.

[Read the full article here...](https://medium.com/the-ember-project/the-ember-cpu-initial-design-part-6-jumps-and-conditional-branches-bfbf7911c80f)
