Form PC-relative address to 4KB page 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.


ADRP <Xd>, <label>

integer d = UInt(Rd); boolean page = (op == '1'); bits(64) imm; if page then imm = SignExtend(immhi:immlo:Zeros(12), 64); else imm = SignExtend(immhi:immlo, 64);

Assembler Symbols


Is the 64-bit name of the general-purpose destination register, encoded in the "Rd" field.


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.


bits(64) base = PC[]; if page then base<11:0> = Zeros(12); X[d] = base + imm;

Internal version only: isa v33.11seprel, AdvSIMD v29.05, pseudocode v2021-09_rel, sve v2021-09_rc3d ; Build timestamp: 2021-10-06T11:41

Copyright © 2010-2021 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.