iOS逆向7基础篇--adrp指令

adrp -- address page 页地址 当前指令页地址的偏移

adrp xd, offset执行结果xd = ((pc >> 12) + offset) << 12
或者可以像下面这样理解该指令:

1.将PC寄存器的低12位清零
2.将offset的值,左移12位
3.将1和2的结果相加给xd寄存器

为什么会存在adrp指令呢?需要理解一个进程的内存空间是分区域的:
代码区:可读可执行
堆区: 动态申请,可读可些
栈区:放参数、局部变量、保护现场等
全局变量区:可读可写
常量区:只读

代码区域访问常量区域或全局变量区域可以使用adrp指令,获取区域所在的页地址。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容