C++学习(三九九)ADRP指令

Posted hankern

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++学习(三九九)ADRP指令相关的知识,希望对你有一定的参考价值。

  14:    90000014     adrp    x20, 0 <__dso_handle>
  18:    90000001     adrp    x1, 0 <_GLOBAL__sub_I_geotiff.cpp>
  1c:    91000294     add    x20, x20, #0x0
  20:    91000021     add    x1, x1, #0x0

ADRP指令

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

ADR指令

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

每次看到adrp指令和add指令一起出现时,就代表着将会向某个寄存器中存储变量。

以上是关于C++学习(三九九)ADRP指令的主要内容,如果未能解决你的问题,请参考以下文章

C++学习(三九八)grep命令

C++学习(四三九)waiting for debugger

C++学习(三九五)ELF类型文件

C++学习(三三九)CMAKE的Advanced

C++学习(一三九)floatdouble的有效数字

C++学习(三九二)-fPIC, -fpic, -fpie, -fPIE