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
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。