adrp -- address page 頁地址 當前指令頁地址的偏移
adrp xd, offset
執(zhí)行結果xd = ((pc >> 12) + offset) << 12
或者可以像下面這樣理解該指令:
1.將PC寄存器的低12位清零
2.將offset的值,左移12位
3.將1和2的結果相加給xd寄存器
為什么會存在adrp指令呢蝠引?需要理解一個進程的內(nèi)存空間是分區(qū)域的:
代碼區(qū):可讀可執(zhí)行
堆區(qū): 動態(tài)申請鸠项,可讀可些
棧區(qū):放參數(shù)羹膳、局部變量晒哄、保護現(xiàn)場等
全局變量區(qū):可讀可寫
常量區(qū):只讀
代碼區(qū)域訪問常量區(qū)域或全局變量區(qū)域可以使用adrp指令愤估,獲取區(qū)域所在的頁地址劲腿。