arm64匯編篇-08內(nèi)存分區(qū)及adrp指令

內(nèi)存分區(qū)

代碼區(qū) 特點(diǎn): 可讀可寫可執(zhí)行

棧區(qū)域 放參數(shù)和局部變量

堆區(qū)域 動(dòng)態(tài)申請(qǐng) 可讀可寫

全局: 可讀可寫

常量區(qū): 只讀!

adrp指令

1)創(chuàng)建項(xiàng)目在mian 文件中寫個(gè)方法然后執(zhí)行此方法在匯編模式調(diào)試斷點(diǎn)。詳細(xì)操作

將debug -> Debug Overflow -> Always Show DisAssembly 選中運(yùn)行查看混編代碼。如果想恢復(fù)再點(diǎn)下就可以了.

2) 得到以下界面

3)原理 adrp操作步驟adrp x0, 1

1. 將1的值,左移12位 1 0000 0000 0000 == 0x1000

2.將PC寄存器的低12位清零 0x1045228b0 ?==> 0x104522000

3.將將1 和 2 的結(jié)果相加? 給 X0 寄存器!!

注:地址為pc寄存器左邊的地址,adrp是找出要獲取參數(shù)的地址范圍,然后下個(gè)pc寄存器執(zhí)行的代碼會(huì)定位到準(zhǔn)確的物理地址。

指令區(qū)域

由于adrp的為范圍尋址并不會(huì)精確到具體地址所以地址的最后三位,即12bit位為0是需要系統(tǒng)下一步執(zhí)行的時(shí)候補(bǔ)上的。

根據(jù)cpu總線的計(jì)算規(guī)則12bit相當(dāng)于12根總線器地址范圍為2的12次方即4KB。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容