I try to read the value of x86_64 register rip. Here is what objdump shows.
4017ec: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi
4017f3: 41 89 d4 mov %edx,%r12d
I expect that after instruction 0x4017ec is executed, the value of rsi should be 0x4017ec. However it is 0x4017f3, which is the address of the next instruction.
I use gdb to stop at 0x4017ec and at that time the value of rip is 0x4017ec. Why is rsi not loaded by the value of rip at that time? Should the processor read instruction from 0x4017ec?