I am a complete beginner in the vast world of assembly, and while learning I have come across a weird occurrence.
Conditional jumps are done on the base of flag checking, to see how certain operators compare. However, there seems to be two different ways to do the checking. With almost every conditional jump instruction, there seems to be a counterpart that does the exact same thing, just with different notation. For example, je
appears to be the same as jz
. As far as I know, both of these instructions jump if the comparison of two operands before the instruction sets the zero flag. What is the difference between the instructions here. Is one more efficient than the other? Does one incur more overhead? Is the differentiation just for readability?
There are a few other instructions that also seem to be the same:
loopz
/loope
jb
/jc
jnz
/jne