Does linker or compiler count RIP during compilation? If no, how does that instruction work? There will be hardcoded at linking time address, or it is special feature of processor architecture, that allows pointer arithmetic at runtime?
leaq boot_heap(%rip), %rsi