Arm64有4種棧,分別是空增棧(Empty Ascendant Stack,EA)、空減棧(Empty Descendant Stack,ED)、滿增棧(Full Ascendant Stack,F(xiàn)A)、滿減棧(Full Descendant Stack,F(xiàn)D)。常用的是滿減棧,Linux內(nèi)核也使用滿減棧。
下圖是一個滿減棧的示意圖,高地址為棧頂,低地址為棧低,棧向低地址方向生長,如右邊的箭頭所示。棧指針SP指向棧底(棧低保存了數(shù)據(jù))。
每產(chǎn)生一次函數(shù)調(diào)用,就會在棧中形成一個棧幀,該棧總共保存了4個棧幀(Stack Frame),每個棧幀由FP、LR及棧參數(shù)(函數(shù)參數(shù)、函數(shù)局部變量等)組成。可以將棧中的所有棧幀視為一個單項鏈表,棧最低位置的棧幀為鏈表頭,棧最高位置的棧幀為鏈表尾,整個鏈表使用FP索引。
棧手動回溯時,可以根據(jù)FP將所有棧幀索引出來。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
內(nèi)核
+關(guān)注
關(guān)注
4文章
1468瀏覽量
42875 -
Linux
+關(guān)注
關(guān)注
88文章
11760瀏覽量
219032
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
介紹在ARM64架構(gòu)下啟動多核的兩種方式
1、ARM64的多核啟動流程分析工作中遇到的多核 ARM CPU 越來越多,總結(jié)分享一些多核啟動的知識,希望能幫助更多小伙伴。在 ARM64 架構(gòu)下如果想要啟動多核,有 spin-table
發(fā)表于 06-13 18:23
在arm64和x86服務(wù)器上運行的耗時來發(fā)現(xiàn)Docker在arm64架構(gòu)下的性能問題
現(xiàn)在的進展并不快,因為老測試集里面用例數(shù)量龐大。目前,老測試集中的用例數(shù)量還遠遠大于新測試集。問題大量的集成測試用例為性能研究提供了方便。筆者通過比較同一測試集在arm64和x86服務(wù)器上運行的耗時來
發(fā)表于 07-12 15:48
一文詳解Linux內(nèi)核的棧回溯與妙用
網(wǎng)上或多或少都能找到棧回溯的一些文章,但是講的都并不完整,沒有將內(nèi)核棧回溯的功能用于實際的內(nèi)核、應(yīng)用程序調(diào)試,這是本篇文章的核心:盡可能引導(dǎo)讀者將棧
ARM64與ARM32 的Linux程序區(qū)別在哪里
arm64或ARM64。我在示例中使用了AArch64寄存器,但我所描述的許多問題也發(fā)生在ARMv8-A 32位執(zhí)行狀態(tài)。
微軟推出首個可用于ARM64設(shè)備的x64仿真
微軟通過開發(fā)者博客宣布,已通過Windows內(nèi)部開發(fā)頻道推出了第一個可用于ARM64設(shè)備的x64仿真的預(yù)覽版Build 21277,這意味著使用ARM芯片的筆記本用戶可以從Windows商店或其他渠道安裝x
微軟發(fā)首個應(yīng)用在ARM64設(shè)備的x64模擬器
面向 Dev 頻道 Windows Insider 成員,今天微軟發(fā)布了 Windows 10 Build 21227 版本更新。而在本次預(yù)覽版更新中,微軟發(fā)布了首個適用于 ARM64 設(shè)備
ARM64 Linux內(nèi)核頁表的塊映射
內(nèi)核文檔Documentation/arm64/memory.rst描述了ARM64 Linux內(nèi)核空間的內(nèi)存映射情況,應(yīng)該是此方面最權(quán)威文檔。 以典型的4K頁和48位虛擬地址為例,整個內(nèi)核空間
Core 3399KJ Linux根文件系統(tǒng)鏡像(arm64/arm32)
電子發(fā)燒友網(wǎng)站提供《Core 3399KJ Linux根文件系統(tǒng)鏡像(arm64/arm32).txt》資料免費下載
發(fā)表于 09-14 10:08
?3次下載
Core 3399J Linux根文件系統(tǒng)鏡像(arm64/arm32)
電子發(fā)燒友網(wǎng)站提供《Core 3399J Linux根文件系統(tǒng)鏡像(arm64/arm32).txt》資料免費下載
發(fā)表于 09-14 09:24
?0次下載
ROC RK3399 PC Pro文件系統(tǒng)Linux根文件系統(tǒng)鏡像(arm64/arm32)
電子發(fā)燒友網(wǎng)站提供《ROC RK3399 PC Pro文件系統(tǒng)Linux根文件系統(tǒng)鏡像(arm64/arm32).txt》資料免費下載
發(fā)表于 09-20 10:59
?5次下載
AIO 3399ProC Linux根文件系統(tǒng)鏡像(arm64/arm32)
電子發(fā)燒友網(wǎng)站提供《AIO 3399ProC Linux根文件系統(tǒng)鏡像(arm64/arm32).txt》資料免費下載
發(fā)表于 09-21 09:52
?11次下載
ARM64位與ARM32位OP-TEE啟動過程的差異
ARM32的OP-TEE與ARM64的OP-TEE啟動過程大致相同。ARM64的OP-TEE的_start函數(shù)定義在generic_entry_a64.S文件中,而且該函數(shù)不像
深入剖析ARM64內(nèi)核關(guān)鍵文件:kernel-6.1/arch/arm64/kernel/head.S
在 ARM64 架構(gòu)的 Linux 內(nèi)核開發(fā)中,arch/arm64/kernel/head.S是一個繞不開的關(guān)鍵文件—— 它是內(nèi)核啟動早期的 “橋梁”,承接 Bootloader 與內(nèi)核初始化核心
Arm64?;厮?結(jié)構(gòu)介紹
評論