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.

Encoding: Literal

313029282726252423222120191817161514131211109876543210
110000
opimmloimmhiRd

ADRP <Xd>, <label>

Decoding algorithm

constant integer d = UInt(Rd);
constant bits(64) imm = SignExtend(immhi:immlo:Zeros(12), 64);

Operation

constant bits(64) base = PC64<63:12>:Zeros(12);
X[d, 64] = base + imm;

Explanations

<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.