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;