RIP-based (instruction pointer register on a 64-bit platform) addressing of data was introduced with the 64-bit architecture and allows generation of a more compact code. This addressing mode follows the same idea as the base/index/scale mode, while the instruction pointer is used as the base.
For example, if want to load a certain register with the address of a variable, we would write the following line in Assembly:
lea rbx, [my_variable]
The assembler would then do all the adjustments automatically, and the result encoding of the instruction would be equivalent to this:
lea rbx, [rip + (my_variable – next_instruction)]
Loading the rbx register with the value of the rip register (the address of the following instruction) plus the offset in bytes of a variable from the address of the following instruction.