I am learning about assembly code. Here is a piece of code I do not fully understand
0: move %rdi, %rax
3: jmp 8 <loop + 0x8>
5: sar %rax
8: test %rax, %rax
b: jg 5 <loop + 0x5>
d: repz retq
So a CPU runs line 0 first, then it jumps to line 8 from line 3. Assuming line b runs, the execution jumps to line 5. My question is how the execution jumps from line 5 to line d? I would assume there is another jmp code after line 5 so that the execution can jump to line d, but I do not see it.