这个指令序列通常用于获取全局符号的地址,并将其存储在寄存器中以供后续使用。以下是一个示例代码片段,它使用此指令序列来获取全局变量"myGlobalVar"的地址:
// Swift代码
let ptr = UnsafeMutableRawPointer(&myGlobalVar)
它编译为以下ARM64汇编代码:
// ARM64汇编
adrp x19, #___lldb_unnamed_symbol1522@PAGE
ldr x19, [x19, #___lldb_unnamed_symbol1522@PAGEOFF]
br x19
其中,adrp将全局符号的高20位加载到寄存器x19中,ldr将低12位加载到x19中,br指令跳转到地址x19处,使得x19现在指向全局变量"myGlobalVar"的地址。