内存分区
代码区 特点: 可读可写可执行
栈区域 放参数和局部变量
堆区域 动态申请 可读可写
全局: 可读可写
常量区: 只读!
adrp指令
1)创建项目在mian 文件中写个方法然后执行此方法在汇编模式调试断点。详细操作
将debug -> Debug Overflow -> Always Show DisAssembly 选中运行查看混编代码。如果想恢复再点下就可以了.
2) 得到以下界面
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。