ARM內(nèi)核(Cortex-M3)由ALU,NVIC,Register Banked,F(xiàn)etch and Decoder Unit,Interfaces組成。
其中的寄存器相當(dāng)于CM3自己的內(nèi)存,存取速度非???。用于暫存數(shù)據(jù)處理中的過(guò)程數(shù)據(jù)和狀態(tài)。
本文先介紹CM3的寄存器組,以及ARM匯編指令。最后通過(guò)反匯編例子來(lái)分析實(shí)際的匯編代碼。
1 寄存器組
CM3 擁有通用寄存器 R0‐R15 以及一些特殊功能寄存器。
R13,堆棧指針(Stack Pointer)
R13寄存器中存放的是堆棧的棧頂指針,CM3中有兩個(gè)堆棧指針,也就支持兩個(gè)堆棧。分別是:主堆棧指針(Main Stack Pointer),進(jìn)程堆棧指針(Process Stack Pointer)。
堆棧主要是通過(guò)POP,PUSH指令來(lái)進(jìn)行操作。在執(zhí)行 PUSH 和 POP 操作時(shí),那個(gè)通常被稱(chēng)為 SP 的地址寄存器,會(huì)自動(dòng)被調(diào)整,以避免后續(xù)的操作破壞先前的數(shù)據(jù)。
R14 ,連接寄存器(Link Register)
在一個(gè)匯編程序中, LR 用于在調(diào)用子程序時(shí)存儲(chǔ)返回地址。例如,在使用 BL(分支并連接, Branch and Link)指令時(shí),就自動(dòng)填充 LR 的值(執(zhí)行函數(shù)調(diào)用的下一指令),進(jìn)而在函數(shù)退出時(shí),正確返回并執(zhí)行下一指令。
如果函數(shù)中又調(diào)用了其他函數(shù),那么LR將會(huì)被覆蓋,所以需要先將LR寄存器入棧PUSH,保護(hù)起來(lái)。
R15,程序計(jì)數(shù)器(Program Count)
因?yàn)?CM3 內(nèi)部使用了指令流水線(xiàn),讀 PC 時(shí)返回的值是當(dāng)前指令的地址+4
特殊功能寄存器組
Cortex‐M3 中的特殊功能寄存器包括:
程序狀態(tài)寄存器組( xPSR),存放當(dāng)前CPU的狀態(tài)
中斷屏蔽寄存器組( PRIMASK, FAULTMASK,以及 BASEPRI),用于控制異常的使能和除能
控制寄存器( CONTROL),用于定義特權(quán)級(jí)別,以及選擇當(dāng)前使用堆棧指針(PSP/MSP?)。
CM3的操作模式
為了架構(gòu)的安全性和健壯性,CM3支持2個(gè)模式(線(xiàn)程模式,handler模式),以及2個(gè)特權(quán)等級(jí)(特權(quán)級(jí),用戶(hù)級(jí))。handler模式下只能是特權(quán)級(jí)。
復(fù)位序列
在進(jìn)入復(fù)位狀態(tài)后, CM3 做的第一件事就是讀取下列兩個(gè) 32 位整數(shù)的值:
從地址 0x0000,0000 處取出 MSP 的初始值。(初始化MSP,為后續(xù)的代碼執(zhí)行創(chuàng)造環(huán)境)
從地址 0x0000,0004 處取出 PC 的初始值---這個(gè)值是復(fù)位向量。(啟動(dòng)引導(dǎo)代碼)
2 ARM匯編指令集
ARM指令集可以分為跳轉(zhuǎn)指令、數(shù)據(jù)處理指令、程序狀態(tài)寄存器(PSR)處理指令、加載/存儲(chǔ)指令、協(xié)處理器指令和異常產(chǎn)生指令六大類(lèi)。
跳轉(zhuǎn)指令:B,BL,BX,BXL(用于函數(shù)調(diào)用時(shí)的跳轉(zhuǎn),分為帶/不帶 返回地址/狀態(tài) 的跳轉(zhuǎn))
數(shù)據(jù)處理指令:MOV,ADD,SUB,DIV,MUL,AND,ORR,CMP...(賦值,加減乘除,與或邏輯,比較)
程序狀態(tài)寄存器(PSR)處理指令:MSR,MRS(用于查詢(xún)或設(shè)置狀態(tài)寄存器/特殊寄存器的數(shù)據(jù))
加載/存儲(chǔ)指令: LDR,STR...(用于寄存器與內(nèi)存之間的數(shù)據(jù)交換,一般為間接尋址)
異常產(chǎn)生指令:SWI(用于產(chǎn)生軟件中斷)
3 函數(shù)調(diào)用過(guò)程的匯編分析
通過(guò)簡(jiǎn)單的函數(shù)調(diào)用,分析入棧,出棧,寄存器的使用,以及常用的ARM匯編指令。
#includeint add_f(int x,int y){ int ret = 0; ret = x + y; return ret;}int main(){ int a = 10,b = 20; int c = add_f(a,b); return 0;}
編譯,再反匯編:
匯編代碼:
add_f 函數(shù) 分析:
寄存器參數(shù)入棧PUSH,保存上一函數(shù)的運(yùn)行參數(shù)fp(R11)
棧指針SP減小20,伸張棧幀空間,開(kāi)辟本次函數(shù)的棧幀(棧幀,就是指單個(gè)函數(shù)運(yùn)行的棧空間,函數(shù)在調(diào)用的過(guò)程中,各個(gè)函數(shù)棧幀進(jìn)行串接,堆棧向下生長(zhǎng)。)
進(jìn)行數(shù)據(jù)操作(MOV,ADD,SUB,LDR,STR等)
棧指針SP復(fù)位至最開(kāi)始的地址,收縮棧幀空間
寄存器參數(shù)出棧POP,恢復(fù)上一函數(shù)的運(yùn)行參數(shù)fp(R11)
bx lr,帶狀態(tài)的跳轉(zhuǎn)至lr寄存器中的地址
所謂的??臻g內(nèi)存由編譯器自動(dòng)回收,也就是這個(gè)道理,在編譯階段,就確定了各個(gè)函數(shù)的棧幀空間的伸張與收縮,無(wú)需程序員來(lái)進(jìn)行內(nèi)存管理。另外,處于堆空間的數(shù)據(jù)需要手動(dòng)分配與釋放(malloc/free)。
上一篇:【ARM】Cortex-M3 存儲(chǔ)器系統(tǒng)
下一篇:【ARM】淺談Cortex-M3
推薦閱讀
史海拾趣
FOCI Fiber Optic Communications Inc.公司發(fā)展的五個(gè)故事
故事一:成立與初創(chuàng)期
FOCI Fiber Optic Communications Inc.(以下簡(jiǎn)稱(chēng)FOCI)成立于1995年,由臺(tái)灣工業(yè)技術(shù)研究院(工研院)的核心團(tuán)隊(duì)創(chuàng)立。這家公司自誕生之初就專(zhuān)注于光纖互連技術(shù)的發(fā)展,致力于設(shè)計(jì)、制造和銷(xiāo)售高性能的光纖組件和集成模塊。初創(chuàng)時(shí)期,F(xiàn)OCI憑借其對(duì)光纖技術(shù)的深刻理解和市場(chǎng)需求的敏銳洞察,逐步在市場(chǎng)上站穩(wěn)腳跟,成為光纖通信領(lǐng)域的一股新興力量。
故事二:技術(shù)創(chuàng)新與突破
FOCI在發(fā)展過(guò)程中,始終將技術(shù)創(chuàng)新視為企業(yè)發(fā)展的核心驅(qū)動(dòng)力。公司不斷投入研發(fā)資源,在光纖耦合器、PLC分配器、薄膜粗波分復(fù)用/密集波分復(fù)用以及多光纖電纜組裝模塊等領(lǐng)域取得了多項(xiàng)技術(shù)突破。這些技術(shù)創(chuàng)新不僅提升了產(chǎn)品的性能和質(zhì)量,還大幅降低了生產(chǎn)成本,使得FOCI的產(chǎn)品在市場(chǎng)上更具競(jìng)爭(zhēng)力。
故事三:與奇景光電的戰(zhàn)略合作
2024年,半導(dǎo)體解決方案無(wú)晶圓廠(chǎng)巨頭奇景光電(Himax Technologies)宣布向FOCI投入5.22億新臺(tái)幣(折合約為1610萬(wàn)美元)的資金。這次投資不僅是兩家公司財(cái)務(wù)合作的結(jié)果,更是雙方在技術(shù)融合與應(yīng)用拓展上邁出的重要一步。根據(jù)合作協(xié)議,F(xiàn)OCI的共封裝光學(xué)器件(CPO)與奇景光電的晶圓級(jí)光學(xué)器件(WLO)將被整合到多芯片模塊中,這些模塊將廣泛應(yīng)用于高性能計(jì)算、云服務(wù)器、人工智能等多個(gè)領(lǐng)域。
故事四:全球化布局與市場(chǎng)拓展
隨著全球光纖通信市場(chǎng)的快速發(fā)展,F(xiàn)OCI積極實(shí)施全球化戰(zhàn)略,不斷拓展國(guó)際市場(chǎng)。公司通過(guò)參加國(guó)際展會(huì)、建立海外銷(xiāo)售網(wǎng)絡(luò)等方式,將高性能的光纖組件和集成模塊帶到了世界各地。特別是在光纖到戶(hù)(FTTH)和云計(jì)算領(lǐng)域,F(xiàn)OCI的產(chǎn)品因其高效、低成本的特性而廣受歡迎,成功在全球市場(chǎng)占據(jù)了一席之地。
故事五:子公司設(shè)立與多元化發(fā)展
為了進(jìn)一步拓展業(yè)務(wù)領(lǐng)域和市場(chǎng)份額,F(xiàn)OCI在國(guó)內(nèi)設(shè)立了多家子公司,如中山上詮?fù)ㄐ趴萍加邢薰镜?。這些子公司不僅繼承了FOCI在光纖通信領(lǐng)域的深厚底蘊(yùn)和技術(shù)優(yōu)勢(shì),還根據(jù)當(dāng)?shù)厥袌?chǎng)需求進(jìn)行了產(chǎn)品和服務(wù)的本地化調(diào)整。同時(shí),F(xiàn)OCI還積極探索多元化發(fā)展路徑,涉足光纖高速數(shù)據(jù)傳輸技術(shù)開(kāi)發(fā)設(shè)計(jì)、研發(fā)和咨詢(xún)等多個(gè)領(lǐng)域,為公司未來(lái)的持續(xù)發(fā)展奠定了堅(jiān)實(shí)基礎(chǔ)。
隨著科技的不斷發(fā)展,DIOO公司始終致力于技術(shù)創(chuàng)新和產(chǎn)品創(chuàng)新。在90年代初,DIOO公司推出了一款革命性的智能音響系統(tǒng),該系統(tǒng)集成了最先進(jìn)的音頻處理技術(shù)、語(yǔ)音識(shí)別技術(shù)和人工智能技術(shù),為用戶(hù)提供了前所未有的便捷和智能體驗(yàn)。這一創(chuàng)新產(chǎn)品迅速在市場(chǎng)上占據(jù)了領(lǐng)先地位,并成為了DIOO公司的標(biāo)志性產(chǎn)品之一。
隨著技術(shù)的不斷更新?lián)Q代,人才成為電子企業(yè)競(jìng)爭(zhēng)的核心要素。Crosspoint Solutions公司高度重視人才培養(yǎng)和引進(jìn)工作,通過(guò)校園招聘、社會(huì)招聘等多種渠道吸引優(yōu)秀人才加入。同時(shí),公司還建立了完善的培訓(xùn)體系,不斷提升員工的技能水平和創(chuàng)新能力。這些優(yōu)秀的人才為公司的發(fā)展提供了強(qiáng)有力的支撐。
高頻電子在精確時(shí)間和頻率生成技術(shù)方面一直處于世界領(lǐng)先地位。公司不斷投入研發(fā),推出了一系列高精度、高性能的定時(shí)和頻率控制產(chǎn)品,如銣蒸氣原子振蕩器、溫度穩(wěn)定的石英晶體振蕩器等。這些產(chǎn)品被廣泛應(yīng)用于商業(yè)、政府、軍事等多個(gè)領(lǐng)域,包括衛(wèi)星通信、指揮控制系統(tǒng)、電子戰(zhàn)系統(tǒng)等。高頻電子的技術(shù)創(chuàng)新不僅提升了自身競(jìng)爭(zhēng)力,還推動(dòng)了整個(gè)行業(yè)的發(fā)展。
為了進(jìn)一步擴(kuò)大市場(chǎng)份額,ECLIPTEK公司決定實(shí)施國(guó)際擴(kuò)張戰(zhàn)略。公司先后在亞洲、歐洲和北美等地設(shè)立了分支機(jī)構(gòu),并在當(dāng)?shù)亟⒘松a(chǎn)基地。為了更好地滿(mǎn)足當(dāng)?shù)乜蛻?hù)的需求,ECLIPTEK還實(shí)施了本地化戰(zhàn)略,根據(jù)市場(chǎng)特點(diǎn)調(diào)整產(chǎn)品設(shè)計(jì)和生產(chǎn)流程。這一舉措不僅提高了公司的市場(chǎng)覆蓋率,還增強(qiáng)了其國(guó)際競(jìng)爭(zhēng)力。
為了進(jìn)一步擴(kuò)大市場(chǎng)份額,ECLIPTEK公司決定實(shí)施國(guó)際擴(kuò)張戰(zhàn)略。公司先后在亞洲、歐洲和北美等地設(shè)立了分支機(jī)構(gòu),并在當(dāng)?shù)亟⒘松a(chǎn)基地。為了更好地滿(mǎn)足當(dāng)?shù)乜蛻?hù)的需求,ECLIPTEK還實(shí)施了本地化戰(zhàn)略,根據(jù)市場(chǎng)特點(diǎn)調(diào)整產(chǎn)品設(shè)計(jì)和生產(chǎn)流程。這一舉措不僅提高了公司的市場(chǎng)覆蓋率,還增強(qiáng)了其國(guó)際競(jìng)爭(zhēng)力。
光纖收發(fā)器,光電轉(zhuǎn)換器的應(yīng)用與選購(gòu) 轉(zhuǎn)自:http://bbs.iianews.com/ ADSL以其充分利用原有資源而得到迅速普及,但同時(shí)也隨著用戶(hù)的不斷增加,速度減慢、故障率增高的弱點(diǎn)越發(fā)突出,特別是傳統(tǒng)的5類(lèi)線(xiàn)電纜只能將以太網(wǎng)電信號(hào)傳輸100米,在 ...… 查看全部問(wèn)答∨ |
|
看到有個(gè)評(píng)論說(shuō)“STC是手機(jī)中的戰(zhàn)斗機(jī)”,當(dāng)時(shí)樂(lè)呵了半天。 其實(shí),還有很多朋友用STC的,昨天還看到有人上傳相關(guān)的資料呢。不可否認(rèn)的是,價(jià)格著實(shí)是個(gè)不錯(cuò)的因素。 但不可否認(rèn)的是,牌子被做的有些爛。 你用過(guò)STC么?你覺(jué)得如何?… 查看全部問(wèn)答∨ |
|
vxworks下用routeShow命令可以顯示路由表,如下 ROUTE NET TABLE Destination Gateway Flags Refcnt Use &n ...… 查看全部問(wèn)答∨ |
|
ce 6.0 s3c6410的平臺(tái),ram擴(kuò)展 想實(shí)現(xiàn)ram從128到256,除了該oemaddrtab_cfg.inc, config.bib外,還應(yīng)該改哪些地方呢!… 查看全部問(wèn)答∨ |
請(qǐng)問(wèn)大家: ISR 的定義? 在某個(gè)函數(shù)里,作者定義 ISR isr ,我不知道這個(gè)ISR在哪里定義的? 是不是在嵌入式中作為了一個(gè)已經(jīng)定義好的函數(shù),或者結(jié)構(gòu)體了? 關(guān)鍵是怎么定義的? 謝謝大家… 查看全部問(wèn)答∨ |
wince 下使用c#調(diào)用webServices 總是出錯(cuò) wince 下使用c#調(diào)用webServices 總是出錯(cuò) 但是使用wince下的ie訪(fǎng)問(wèn)沒(méi)有問(wèn)題 就是方法測(cè)試時(shí) 提示下在文件 應(yīng)該程序訪(fǎng)問(wèn)webServices 總是出錯(cuò)… 查看全部問(wèn)答∨ |
如題,如何進(jìn)行兩片DSP的JTAG的串行連接問(wèn)題,連接后他們的仿真是怎么區(qū)分對(duì)哪個(gè)DSP進(jìn)行的,片子是TMS320VC5502和TMS320C6713… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 【下載】LAT1466 USB x Device HID Standalone的移植
- 【下載】LAT1488 STM32 USBxDevice MSC standalone移植示例
- 【下載】LAT1482 STM32G0單線(xiàn)串口通信幀錯(cuò)誤問(wèn)題解析
- 【下載】LAT1473 STM32C0 HAL庫(kù)的SPI 驅(qū)動(dòng)導(dǎo)致的Hardfault問(wèn)題分析
- 【下載】LAT1490 兩個(gè)STM32G0 I2C 通信異常的案例分析
- 【下載】LAT1470 SPI傳輸長(zhǎng)度超過(guò)1024時(shí)出現(xiàn)異常的問(wèn)題分析
- 迅為IMX6開(kāi)發(fā)板Android應(yīng)用-AndroidStudio-calculator測(cè)試
- 玩轉(zhuǎn) ESP32 + Arduino (二十) SIM800L上傳數(shù)據(jù)到OneNet(新版Mqtts)
- 玩轉(zhuǎn) ESP32 + Arduino (二十一) SPIFFS文件系統(tǒng) (已棄用)
- 玩轉(zhuǎn) ESP32 + Arduino (二十二) SIM800L上傳數(shù)據(jù)到阿里IOT(溫濕度和LBS)(NTP對(duì)時(shí))
- 玩轉(zhuǎn) ESP32 + Arduino (二十三) 多文件系統(tǒng)及全局變量
- 玩轉(zhuǎn) ESP32 + Arduino (二十四) SD卡讀寫(xiě)
- 玩轉(zhuǎn) ESP32 + Arduino (二十五) SSD1306庫(kù)驅(qū)動(dòng)OLED
- 玩轉(zhuǎn) ESP32 + Arduino(二十六) 按鍵控制庫(kù) OneButton
- 玩轉(zhuǎn) ESP32 + Arduino(二十七) ESP對(duì)象
- Panasonic模組整合Nordic的nRF54L15 SoC,為先進(jìn)的物聯(lián)網(wǎng)應(yīng)用實(shí)現(xiàn)高效能、高效率及低功耗優(yōu)勢(shì)
- 學(xué)子專(zhuān)區(qū)論壇 - ADALM2000實(shí)驗(yàn):Hartley振蕩器
- Molex 莫仕將在2025慕尼黑上海電子展上展示領(lǐng)先的數(shù)據(jù)中心服務(wù)器和存儲(chǔ)、消費(fèi)類(lèi)和商用產(chǎn)品以及汽車(chē)和運(yùn)輸解決方案
- 能游泳能攀爬,俄羅斯正研發(fā)百元級(jí)球形偵察機(jī)器人
- ModbusTCP轉(zhuǎn)Profinet:ABB機(jī)器人與PLC的高效連接
- ModbusTCP轉(zhuǎn)Profinet:工業(yè)通信的利器
- ModbusTCP轉(zhuǎn)Profinet:恒壓供水的神器
- Profinet轉(zhuǎn)ModbusTCP網(wǎng)關(guān):工業(yè)升級(jí)利器
- Profinet轉(zhuǎn)ModbusTCP網(wǎng)關(guān):數(shù)字化工廠(chǎng)的橋梁
- 三菱PLC故障排除常見(jiàn)問(wèn)題
- 有獎(jiǎng)直播:意法半導(dǎo)體SiC產(chǎn)品及其工業(yè)應(yīng)用指南
- 2025新年花燈節(jié),來(lái)場(chǎng)花式點(diǎn)燈秀吧!
- 【摸黑搶樓】贏(yíng)大禮,關(guān)于示波器的狂想曲!正式開(kāi)搶?zhuān)。。?/a>
- 我為T(mén)I M4開(kāi)發(fā)板Hanker試用狂!
- TI有獎(jiǎng)直播|C2000™ F280013x實(shí)現(xiàn)更低成本且更高效的實(shí)時(shí)控制方案
- 下載【ADI 6本精選電子書(shū)】,截圖抽紅包啦~
- 有獎(jiǎng)直播:英飛凌針對(duì)電動(dòng)工具的高功率、高效率以及高可靠性解決方案
- 功率計(jì)等測(cè)量?jī)x器測(cè)試不穩(wěn)定因素是什么?如何解決?
- 節(jié)卡機(jī)器人與快倉(cāng)智能達(dá)成戰(zhàn)略合作
- 耐壓測(cè)試器工作原理圖分析
- 一加Warp Charge 30無(wú)線(xiàn)充電板細(xì)節(jié)解密
- 示波器真的是調(diào)試模擬電源最好工具
- 任正非:可以轉(zhuǎn)讓5G技術(shù),愿意和美司法部談判
- 供應(yīng)鏈稱(chēng)新iPhone訂單比去年只少了一成
- 川普外貿(mào)政策能撐多久呢?
- Galaxy Fold實(shí)測(cè):折疊屏幕好不好用呢?
- 評(píng)芯而論:市值重登1萬(wàn)億美元巔峰,蘋(píng)果三大挑戰(zhàn)才剛開(kāi)始?