M0的儲存器系統以及棧操作

2021-10-01 13:24:48 字數 1589 閱讀 8407

3.3 儲存器系統

cortex-m0處理器具有4gb的儲存器位址空間。在體系結構上,儲存器空間被分作一系列的區域,每個區域都有推薦的用途

----------------以提高不同裝置間的可移植性。

cortex-m0處理器內建了各種部件,例如nvic(巢狀向量中斷控制器)和一些除錯部件,它們都被對映到系統空間的固定位址上。因此所有基於cortex mo的裝置在中斷控制和除錯方面,都具有相同的程式設計模型。這種處理有利於軟體移植,也方便除錯工具**商為基於cortex-m0的微控制器和片上系統(soc)提供開發除錯方案。

cortex-m0的儲存器系統支援各種大小的資料傳輸,包括位元組(8位),半字(16位)、字(32位)

3.4棧空間操作

棧空間作為一種儲存器使用機制,是先人先出的結構,在系統空間中用作臨時資料存

儲。棧空間操作的關鍵點之一為棧指標暫存器**,每次執行棧操作時,******棧指標的內容自動調

整。****在cortex-m0處理器中,棧指標為r13,而且物理上存在著兩個棧指標,但每次只會使

用乙個,這是由control暫存器以及處理器的狀態決定的(見圖3.7)。

按照通常的說法,向棧中儲存資料稱為「壓棧"(使用push指令),恢復資料則稱作「出

棧"(使用pop指令)。根據所使用架構的不同,有些處理器在向棧存人資料時位址會自動

增加,而有些則會減小。cortexm0處理器的棧操作基於「滿遞減"(**fulldescending)的棧模

型,這就意味著棧指標始終指向棧空間的最後乙個資料,在執行資料儲存前(push),棧指

針會首先減小。

*push和pop通常用在函式或子程式的開始和結尾處。*在函式開始執行時,push

操作將暫存器的當前內容存人棧空間;執行結束前,pop又將棧空間儲存的資料恢復。一

般說來,對每個暫存器的push操作都應相應地進行pop操作。否則恢復的資料可能無

法對應之前的暫存器,這樣會導致無法預期的後果,比如棧溢位.

可以通過r13或sp訪問r13或sp,根據處理器狀態和control暫存器值的不同,訪問的棧指標可以是主棧指標(msp),也可以是程序棧指標(psp)。許多簡單的應用只會用到乙個棧指標,一般預設是主棧指標(msp),程序棧指標通常只用於嵌人式應用的作業系統(os)。

由於棧是向下生長的(滿遞減),記憶體的上邊界通常會被用作棧指標的初始值。

每次出棧以及壓棧操作的最小單位是4位元組(32位),還可以使用一條指令實現對多個暫存器的壓棧和出棧操作。cortex-m0的棧空間被設計為字對齊的(位址值必須是4的倍數,比如0x0、0x4、0x8等),由於這個原因,棧指標的最低兩位(bits[1:0])在硬體上被置為了0,因此讀出固定為0。

作業系統的儲存器管理 記憶體

儲存器是計算機系統的重要資源之一,任何程式 資料和各控制資料結構都必須占用一定的儲存空間。因此,儲存器管理直接影響系統效能。儲存器有記憶體 主存 和外存 輔存 組成,記憶體由包含相應物理單元的 順序編址的 儲存塊 組成。cpu只有在 啟動相應 io裝置之後,才能使記憶體 與外存交換資訊。在誕生作業系...

作業系統之儲存器的層次

儲存器的層次 計算機系統的儲存器可以分為暫存器 快取記憶體 主儲存器 磁碟快取 固定磁碟 可移動儲存介質等7個層次。如上圖所示,越往上,儲存介質的訪問速度越快,也越高。其中暫存器 快取記憶體 主儲存器和磁碟快取均屬於儲存管理的管轄範疇,掉電後它們儲存的資訊不再存在。固定磁碟和可移動儲存介質屬於裝置管...

作業系統 虛擬儲存器的概念

程式裝入記憶體時可能會出現如下問題 常規儲存器管理方式的特徵 許多不用或暫時不用的程式占用了大量記憶體空間,而其他程式卻無法裝入!這是否必要?區域性性原理 1968年,denning.p指出 侷限性又表現在下述兩個方面 空間侷限性 虛擬儲存器的基本思想是 虛擬儲存器支援多道程式設計技術 虛擬儲存器定...