After reading the question I’m still not sure how CPU does branching.
I understand that we have an instruction counter which points to the current instruction. And after performing conditional jump it either stays the same (increments as usual) or increases (jumps) and points to another branch, that’s clear.
The problem: to define conditional jump we need a conditional jump? I mean in order to evaluate an
IF the processor has to evaluate condition and
IF it’s true, then jump, otherwise not. It’s an endless recursion.
So how does the conditional jump work on the lowest level?