arm64汇编篇-08内存分区及adrp指令

内存分区

代码区 特点: 可读可写可执行

栈区域 放参数和局部变量

堆区域 动态申请 可读可写

全局: 可读可写

常量区: 只读!

adrp指令

1)创建项目在mian 文件中写个方法然后执行此方法在汇编模式调试断点。详细操作

将debug -> Debug Overflow -> Always Show DisAssembly 选中运行查看混编代码。如果想恢复再点下就可以了.

2) 得到以下界面

arm64汇编篇-08内存分区及adrp指令_第1张图片

3)原理 adrp操作步骤adrp x0, 1

1. 将1的值,左移12位 1 0000 0000 0000 == 0x1000

2.将PC寄存器的低12位清零 0x1045228b0  ==> 0x104522000

3.将将1 和 2 的结果相加  给 X0 寄存器!!

注:地址为pc寄存器左边的地址,adrp是找出要获取参数的地址范围,然后下个pc寄存器执行的代码会定位到准确的物理地址。

指令区域

由于adrp的为范围寻址并不会精确到具体地址所以地址的最后三位,即12bit位为0是需要系统下一步执行的时候补上的。

根据cpu总线的计算规则12bit相当于12根总线器地址范围为2的12次方即4KB。


你可能感兴趣的:(ios安全攻防系列)