深入理解ARM的這三個寄存器,對編程以及操作系統的移植都有很大的裨益。
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的堆棧學習筆記
下一篇:什么是ARM中的SP(堆棧)和LR?
推薦閱讀
史海拾趣
DYMO公司成立于20世紀XX年代,由發明家XXX創立。XXX先生對標簽打印技術的潛力有著深刻的洞察,他相信這項技術將極大地提高辦公效率。他帶領團隊研發了第一款便攜式標簽打印機,這款產品以其易用性和便攜性迅速贏得了市場的認可。DYMO公司的成功,從創始人XXX的遠見和決心開始。
為了擴大市場份額,DYMO公司積極尋求與各大零售商和辦公用品供應商的合作。通過與這些合作伙伴建立緊密的合作關系,DYMO公司的產品得以更廣泛地進入市場,并被更多的消費者所熟知。此外,DYMO公司還積極開拓國際市場,將其產品銷往全球各地。
在電子行業的初期,First Silicon Co., Ltd公司憑借其在半導體材料領域的深厚積累,成功研發出一種新型硅基材料,該材料在導電性和穩定性上遠超當時市場上的同類產品。這一技術創新不僅為公司贏得了行業內的廣泛關注,還吸引了眾多知名電子制造商的合作意向。通過不斷優化生產工藝和降低成本,First Silicon迅速將這一新材料商業化,成功打入高端電子市場,為公司的快速發展奠定了堅實基礎。
廣東奧科公司在創立之初,面臨著資金短缺、技術瓶頸以及市場競爭激烈的困境。然而,公司的創始人憑借對電子行業的深厚理解和對市場需求的敏銳洞察,堅信公司能夠在這個領域取得成功。他們帶領團隊夜以繼日地研發新產品,不斷優化生產工藝,逐步在市場上打開局面。這段時期,廣東奧科公司憑借堅韌不拔的精神和持續的努力,為公司的未來發展奠定了堅實的基礎。
在市場競爭日益激烈的背景下,BAHCO選擇了與同樣擁有悠久歷史的美國Snap-on公司進行合作。這次強強聯合不僅加強了雙方在技術、市場等方面的互補優勢,更為BAHCO打開了更廣闊的市場空間。通過Snap-on的全球銷售網絡,BAHCO的產品得以進入更多國家和地區,進一步提升了公司的品牌影響力和市場競爭力。
在20世紀90年代末,Cygnal Integrated Products Inc由幾位熱衷于微控制器技術的工程師創立。他們看到了嵌入式系統在電子產品中的巨大潛力,并決定專注于開發高性能、低功耗的微控制器。通過不斷的技術創新和市場調研,Cygnal成功推出了其首款產品——一款集成了多種外設接口的8位微控制器,受到了市場的熱烈歡迎。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF3 ISPORT(CLK,D1:IN STD_LOGIC;<br> Q1:OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF3 IS SIGNAL A,B:STD_LOGIC; BEGIN PROCESS(CLK) BEGINIF CLK’EVENT AND CLK =’ ...… 查看全部問答∨ |
|
waveAPI.dll->audio device manager->software mixer waveAPI.dll->audio device manager->software mixer 請問這個software mixer怎么用? 怎么找到它的相關信息。我在help里找不到? 是不是添加什么item進去sysgen? app又要怎么用,相應的API是什么,哪里找得到信息。 ------------------- ...… 查看全部問答∨ |
|
我的畢業設計要求做嵌入式的開發,將一些專業參數的計算方法嵌入到GPS得RTK手簿(WINCE系統)中,這些參數的計算與原系統中軟件功能無關,VC++太深,我怕來不及學習,想用C#進行開發,可看到很少有用C#做嵌入式的,而且聽說不能做底層,迷茫中,希 ...… 查看全部問答∨ |
|
本教程為北京化工大學何賓教授親自編寫的培訓教程,這個教程結合大量的圖表對賽靈思ISE13.1工具的使用進行了講解,ISE® 13設計套件是賽靈思最新推出的工具,主要針對Spartan®-6、Virtex®-6和7系列FPGA以及行業領先的容量高達200萬個邏 ...… 查看全部問答∨ |
對于ARM的程序,比如ARM7,對于寫一個很小的的工程時,比如就讓一個燈亮,一個蜂鳴器響。就要寫的程序就很多,比如要初始化GPIO,宏定義多個,又要設置FCO,PCLK,設置好多寄存器。沒51那么簡單。… 查看全部問答∨ |
MINI2440+uCOSII+uCGUI3.98+X35屏 這幾天倒騰了一下MINI2440+uCOSII+uCGUI3.98+X35屏其中在網上參考了很多論壇經過不斷嘗試最后弄出來了拿來分享給大家文件下在連接:http://115.com/file/c2ulz6bc要下的趕緊下… 查看全部問答∨ |