adr
https://www.mztn.org/dragon/arm6405str.html
adr は命令が実行されるアドレス ( program-counter) を基準にして、相対的なアドレスをレジスタにロードします。
example
0xaaaaaaaa0a90 番地に adr x0, #0x1000
という命令が格納されていたとします。
このとき、 0xaaaaaaaa0a90 に 0x1000 を足した値 0xaaaaaaaa1a90 を x0 にロードします。
adrp
adrp は命令が実行されるアドレスを基準にして、そのアドレスが格納されているページの先頭アドレスをレジスタにロードします。
たとえば メモリ空間におけるページ のように 4096 byte = 0x1000 がページサイズだとします。 このとき、 0x0000aaaaaaaa0a90 番地は 0x0000aaaaaaaa0000 がページ自体の先頭アドレスになります。
example
0xaaaaaaaa0a90 番地に adrp x0, #0x43
という命令が格納されていたとします。
このとき、はじめにページ自体の先頭アドレスを計算し、 0x0000aaaaaaaa0000 になります。
そして、オフセット 0x43 を足して 0x0000aaaaaaaa0043 となります。