ADRP指令

不羁岁月 提交于 2020-01-04 16:57:00
ADRP            X8, #_g@PAGE
ADD             X8, X8, #_g@PAGEOFF
  • 得到一个大小为4KB的页的基址,而且在该页中有全局变量g的地址;ADRP就是讲该页的基址存到寄存器X8中;
  • ADD指令会算出g的地址,X8+#_g@PAGEOFF,#_g@PAGEOFF是一个偏移量;这样就得到了g的地址X8;

ADR指令

这是一条小范围的地址读取指令,它将基于PC的相对偏移的地址读到目标寄存器中;
使用格式:ADR register exper

  • 编译时,首先会计算出当前PC到exper的偏移量#offset_to_exper
  • 然后会用ADD或SUB指令,来替换这条指令;例如ADD register,PC,#offset_to_exper
  • register就是exper的地址;

ADRP指令

  • 编译时,首先会计算出当前PC到exper的偏移量#offset_to_exper
  • pc的低12位清零,然后加上偏移量,给register
  • 得到的地址,是含有label的4KB对齐内存区域的base地址;



作者:fanren
链接:https://www.jianshu.com/p/e5452c97cfbd
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!