1. 程式人生 > >arm64彙編篇-08記憶體分割槽及adrp指令

arm64彙編篇-08記憶體分割槽及adrp指令

記憶體分割槽

程式碼區 特點: 可讀可寫可執行

棧區域 放參數和區域性變數

堆區域 動態申請 可讀可寫

全域性: 可讀可寫

常量區: 只讀!

adrp指令

1)建立專案在mian 檔案中寫個方法然後執行此方法在彙編模式除錯斷點。詳細操作

將debug -> Debug Overflow -> Always Show DisAssembly 選中執行檢視混編程式碼。如果想恢復再點下就可以了.

2) 得到以下介面


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

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

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

3.將將1 和 2 的結果相加  給 X0 暫存器!!

注:地址為pc暫存器左邊的地址,adrp是找出要獲取引數的地址範圍,然後下個pc暫存器執行的程式碼會定位到準確的實體地址。

指令區域

由於adrp的為範圍定址並不會精確到具體地址所以地址的最後三位,即12bit位為0是需要系統下一步執行的時候補上的。

根據cpu匯流排的計算規則12bit相當於12根匯流排器地址範圍為2的12次方即4KB。