ADRP Form PC-relative address to 4KB page This instruction adds an immediate value that is shifted left by 12 bits, to the PC value to form a PC-relative address, with the bottom 12 bits masked out, and writes the result to the destination register. 1 1 0 0 0 0 ADRP <Xd>, <label> constant integer d = UInt(Rd); constant bits(64) imm = SignExtend(immhi:immlo:Zeros(12), 64); <Xd> Is the 64-bit name of the general-purpose destination register, encoded in the "Rd" field. <label> Is the program label whose 4KB page address is to be calculated. Its offset from the page address of this instruction, in the range +/-4GB, is encoded as "immhi:immlo" times 4096. constant bits(64) base = PC64<63:12>:Zeros(12); X[d, 64] = base + imm;