娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年03月29日(星期六)

2020年03月29日 | ARM指針寄存器 -程序計數器PC、堆棧指針SP

發布者:紙扇輕搖 來源: eefocus關鍵字:ARM  指針寄存器  程序計數器PC  堆棧指針SP 手機看文章 掃描二維碼
隨時隨地手機看文章

堆棧是一種具有“后進先出”(LIFO---Last In First Out)特殊訪問屬性的存儲結構。堆棧一般使用RAM 物理資源作為存儲體,再加上LIFO 訪問接口實現。

堆棧的實現方法:
在隨機存儲器區劃出一塊區域作為堆棧區,數據可以一個個順序地存入(壓入)到這個區域之中,這個過程稱為‘壓棧’(push )。通常用一個指針(堆棧指針 SP---Stack  Pointer)實現做一次調整,SP  總指向最后一個壓入堆棧的數據所在的數據單元(棧頂)。從堆棧中讀取數據時,按照堆棧 指針指向的堆棧單元讀取堆棧數據,這個過程叫做 ‘彈出’(pop ),每彈出一個數據,SP 即向相反方向做一次調整,如此就實現了后進先出的原則。


堆棧是計算機中廣泛應用的技術,基于堆棧具有的數據進出LIFO特性,常應用于保存中斷斷點、保存子程序調用返回點、保存CPU現場數據等,也用于程序間傳遞參數。


ARM處理器中通常將寄存器R13作為堆棧指針(SP)。ARM處理器針對不同的模式,共有 6 個堆棧指針(SP),其中用戶模式和系統模式共用一個SP,每種異常模式都有各自專用的R13寄存器(SP)。它們通常指向各模式所對應的專用堆棧,也就是ARM處理器允許用戶程序有六個不同的堆棧空間。這些堆棧指針分別為R13、R13_svc、R13_abt、R13_und、R13_irq、R13_fiq,如表2-3    堆棧指針寄存器所示。 

為了更準確地描述堆棧,根據“壓棧”操作時堆棧指針的增減方向,將堆棧區分為‘遞增堆棧’(SP 向大數值方向變化)和‘遞減堆棧’(SP 向小數值方向變化);又根據SP 指針指向的存儲單元是否含有堆棧數據,又將堆棧區分為‘滿堆棧’(SP 指向單元含有堆棧有效數據)和‘空堆棧’(SP 指向單元不含有堆棧有效數據)。


這樣兩兩組合共有四種堆棧方式——滿遞增、空遞增、滿遞減和空遞減。

ARM處理器的堆棧操作具有非常大的靈活性,對這四種類型的堆棧都支持。

ARM處理器中的R13被用作SP。當不使用堆棧時,R13 也可以用做通用數據寄存器

 

深入理解ARM的這三個寄存器,對編程以及操作系統的移植都有很大的裨益。

PC 代表程序計數器,流水線使用三個階段,因此指令分為三個階段執行:


1.取指(從存儲器裝載一條指令);

2.譯碼(識別將要被執行的指令);3.執行(處理 指令并將結果寫回寄存器)。而R15(PC)總是指向“正在取指”的指令,而不是指向“正在執行”的指令或正在“譯碼”的指令。一般來說,人們習慣性約定 將“正在執行的指令作為參考點”,稱之為當前第一條指令,因此PC總是指向第三條指令。當ARM狀態時,每條指令為4字節長,所以PC始終指向該指令地址 加8字節的地址,即:PC值=當前程序執行位置+8;


ARM指令是三級流水線,取指,譯指,執行時同時執行的,現在PC指向的是正在取指的地址,那么cpu正在譯指的指令地址是PC-4(假設在ARM狀態 下,一個指令占4個字節),cpu正在執行的指令地址是PC-8,也就是說PC所指向的地址和現在所執行的指令地址相差8。


當突然發生中斷的時候,保存的是PC的地址

這樣你就知道了,如果返回的時候返回PC,那么中間就有一個指令沒有執行,所以用SUB pc lr-irq #4。


1、堆棧指針r13(SP):每一種異常模式都有其自己獨立的r13,它通常指向異常模式所專用的堆棧,也就是說五種異常模式、非異常模式(用戶模式和系統模式),都有各自獨立的堆棧,用不同的堆棧指針來索引。這樣當ARM進入異常模式的時候,程序就可以把一般通用寄存器壓入堆棧,返回時再出棧,保證了各種模式下程序的狀態的完整性。


2、連接寄存器r14(LR):每種模式下r14都有自身版組,它有兩個特殊功能。

(1)保存子程序返回地址。使用BL或BLX時,跳轉指令自動把返回地址放入r14中;子程序通過把r14復制到PC來實現返回,通常用下列指令之一:

MOV PC, LR 
BX LR

通常子程序這樣寫,保證了子程序中還可以調用子程序。
stmfd sp!, {lr}
……
ldmfd sp!, {pc}

(2)當異常發生時,異常模式的r14用來保存異常返回地址,將r14如棧可以處理嵌套中斷。


3、程序計數器r15(PC):PC是有讀寫限制的。當沒有超過讀取限制的時候,讀取的值是指令的地址加上8個字節,由于ARM指令總是以字對齊的,故bit[1:0]總是00。當用str或stm存儲PC的時候,偏移量有可能是8或12等其它值。在V3及以下版本中,寫入bit[1:0]的值將被忽略,而在V4及以上版本寫入r15的bit[1:0]必須為00,否則后果不可預測。


ARM處理器使用流水線來增加處理器指令流的速度,這樣可使幾個操作同時進行,并使處理與存儲器系統之間的操作更加流暢,連續,能提供0.9MIPS/MHZ的指令執行速度。

關鍵字:ARM  指針寄存器  程序計數器PC  堆棧指針SP 引用地址:ARM指針寄存器 -程序計數器PC、堆棧指針SP

上一篇:初始化ARM處理器各模式下的堆棧指針SP(R13)
下一篇:3.堆棧指針寄存器 SP 詳解

推薦閱讀

2018年3月23至24日,由安全可靠技術和產業聯盟主辦的“中國安全可靠技術和應用研討會”在京舉行。會議受到了工信部領導的重視與肯定,來自安全可靠產業鏈上下游的400余名企業代表參與了本次大會。會議包括成果展覽、新產品和新應用發布等三方面內容,38家聯盟成員單位現場集中展示了52款安全可靠新產品和新應用,37家單位展示了產業最新成果,覆蓋從底層芯...
人類自誕生以來,就一直在與各種疾病進行斗爭。從煉制長生不老的“仙丹”、吃人血饅頭治療咳嗽,到用可穿戴設備監測心率、人工智能檢測疾病;從愚昧和無助,到科學和自信,這一歷程充滿了曲折和艱辛。變的是思維、技術和方法,不變的是人類對健康和長生的渴望。不斷進步的醫療科技自19世紀以來,隨著生物、化學、電子、計算機等各學科的快速進步,各種新型...
標注:注意大家一般的得到的STM32程序中的延遲函數delay_ms()中的入口參數值是有限制的,他最大值只能是1864,我之前不知道,程序中一直錯誤地使用它,所以導致延時不準確。//延時nms//注意nms的范圍//SysTick->LOAD為24位寄存器,所以,最大延時為://nms<=0xffffff*8*1000/SYSCLK//SYSCLK單位為Hz,nms單位為ms//對72M條件下,nms<=1864 void delay_ms(u16 ...
創造先進技術和元器件的綜合電子元器件制造商株式會社村田制作所(以下簡稱“村田”)在天貓商城(TMALL)開設旗艦店。村田是為數不多入駐TMALL的元器件制造商,此舉旨在為中國本土更廣泛的顧客群體提供更好的服務,特別是有小批量采購需求的客戶和獨立開發者。 村田在天貓Murata旗艦店上架的商品不僅包括村田MLCC和EMI兩大主營產品,還有行業領先的時鐘元...

史海拾趣

問答坊 | AI 解惑

清華微電子所verilog課件

小弟希望與更多的有志之士交流,先供上清華微電子所verilog課件一份,…

查看全部問答∨

程序下載與單片機型號的選擇

就是ISP那里選擇單片機型號時,是不是一定要選擇和實驗板板上一模一樣的,用同一系列的其他型號代替行不?應該有大俠試過吧…

查看全部問答∨

51中,stack space 是ROM的一部分,還是RAM的一部分?

51中,stack space 是ROM的一部分,還是RAM的一部分?…

查看全部問答∨

用過keil的高手請進,關于初始化UART0,在線等。。。

  keil下初始化串口老是不成功,串口輸出的都是亂碼,但是在ADS下初始化都是正常的,是不是在ADS和keil下初始化有什么區別,高手指點一下。。。 …

查看全部問答∨

VC2005智能設備exe下如何能把HBITMAP hBitmap 輸出為jpg,png,tiff等格式的圖象?

VC2005智能設備exe下如何能把HBITMAP hBitmap 輸出為jpg,png,tiff等格式的圖象?…

查看全部問答∨

請問在protel dxp的原理圖庫里怎樣為某個器件增加一個part?

請問在protel dxp的原理圖庫里怎樣為某個器件增加一個part?…

查看全部問答∨

小問題

驅動中:SYS文件和INF文件的聯系…

查看全部問答∨

前段時間TI發的那個申請DSP28XX系列開發板有人得到郵件了嗎?

說是10天后給消息,現在10多天過去了。。。。有人得到消息嗎?…

查看全部問答∨

MSP430學習筆記之十:EZ430+C2500

看一下文檔,里邊有個原理圖 從原理上看CC2500同MSP430F2274是SPI連的,我想這必須得用那個庫了,否則沒法協調。時間也不允許 打開DEMO程序 計算機端是ACCESS 有電池那端是EDN 切換時點ACTIVE 我的又恢復了才來的樣子 即然又得SPI又得 ...…

查看全部問答∨

MC9S08的中斷問題

請問MC9S08單片機的中斷優先級可以自己設置嗎?就是可以改嗎?謝謝大家了…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 乌拉特中旗| 蒙自县| 常德市| 定安县| 芦山县| 奉化市| 通山县| 邳州市| 江山市| 奉化市| 辽宁省| 潜山县| 广州市| 当雄县| 华阴市| 得荣县| 威宁| 葵青区| 寿阳县| 宝山区| 龙山县| 云阳县| 南丹县| 甘肃省| 西乡县| 志丹县| 富阳市| 徐水县| 乡城县| 中牟县| 友谊县| 天气| 永平县| 南阳市| 万荣县| 会东县| 平邑县| 本溪市| 民乐县| 辉县市| 阿尔山市|