adrp -- address page 页地址 当前指令页地址的偏移
adrp xd, offset
执行结果xd = ((pc >> 12) + offset) << 12
或者可以像下面这样理解该指令:
1.将PC寄存器的低12位清零
2.将offset的值,左移12位
3.将1和2的结果相加给xd寄存器
为什么会存在adrp指令呢?需要理解一个进程的内存空间是分区域的:
代码区:可读可执行
堆区: 动态申请,可读可些
栈区:放参数、局部变量、保护现场等
全局变量区:可读可写
常量区:只读
代码区域访问常量区域或全局变量区域可以使用adrp指令,获取区域所在的页地址。