【ARM汇编指令积累】

需求:

自己写了一段switch代码在arm64上运行,然后通过xcode的编译成汇编指令,想解读每一句指令。

遇到问题:

adrp x8, LJTI0_0@PAGE
add x8, x8, LJTI0_0@PAGEOFF

这两句指令有@PAGE,不知其所以然,遂问谷歌,查到资料,如下。
https://reverseengineering.stackexchange.com/questions/14385/what-are-page-and-pageoff-symbols-in-ida
解释的很清楚,但是自己看得半懂不懂的样子:joy:,回到这句指令,还是不知道应该怎么运算?遂上iOSRE,求告知。

先是获得页地址再加上页偏移 最后x8的值就是LJTI0_0这个变量的地址

L0_0_set_2 = LBB0_2-LJTI0_0
L0_0_set_3 = LBB0_3-LJTI0_0
L0_0_set_4 = LBB0_4-LJTI0_0
L0_0_set_5 = LBB0_5-LJTI0_0
L0_0_set_6 = LBB0_6-LJTI0_0
L0_0_set_7 = LBB0_7-LJTI0_0
LJTI0_0:
.long L0_0_set_2
.long L0_0_set_3
.long L0_0_set_4
.long L0_0_set_5
.long L0_0_set_6
.long L0_0_set_7
.end_data_region
; – End function
.section __TEXT,__cstring,cstring_literals

根据这些信息,能获取到页地址跟页偏移么?