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

内存分区

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

栈区域 放参数和局部变量

堆区域 动态申请 可读可写

全局: 可读可写

常量区: 只读!

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。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容