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

歷史上的今天

今天是:2025年03月24日(星期一)

正在發(fā)生

2021年03月24日 | 【ARM】?jī)?nèi)核寄存器以及常用匯編指令分析

發(fā)布者:CyberJolt 來(lái)源: eefocus關(guān)鍵字:ARM  匯編指令 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

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匯編指令。

#include int 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)。

關(guān)鍵字:ARM  匯編指令 引用地址:【ARM】?jī)?nèi)核寄存器以及常用匯編指令分析

上一篇:【ARM】Cortex-M3 存儲(chǔ)器系統(tǒng)
下一篇:【ARM】淺談Cortex-M3

推薦閱讀

觸摸屏是人機(jī)界面的一種,但是有區(qū)別的人機(jī)界面(Human-ComputerInterface,簡(jiǎn)寫(xiě)HCI,又稱(chēng)用戶(hù)界面或使用者界面):是人與計(jì)算機(jī)之間傳遞、交換信息的媒介和對(duì)話(huà)接口,是計(jì)算機(jī)系統(tǒng)的重要組成部分。它實(shí)現(xiàn)信息的內(nèi)部形式與人類(lèi)可以接受形式之間的轉(zhuǎn)換。凡參與人機(jī)信息交流的領(lǐng)域都存在著人機(jī)界面。系統(tǒng)和用戶(hù)之間進(jìn)行交互和信息交換的媒介,它實(shí)現(xiàn)信息的內(nèi)...
我們離開(kāi)特斯拉來(lái)看看美國(guó)市場(chǎng)的其他電動(dòng)汽車(chē),和特斯拉遇到相似問(wèn)題的還有通用汽車(chē)。在2018年的最后一個(gè)季度,通用汽車(chē)的電動(dòng)車(chē)?yán)塾?jì)銷(xiāo)量已經(jīng)超過(guò)20萬(wàn)輛。從今年4月1日開(kāi)始,通用的電動(dòng)汽車(chē)的補(bǔ)貼將從7,500美元減半至3,750美元,10月份開(kāi)始補(bǔ)貼將只有1,875美元。2020年4月1日開(kāi)始,補(bǔ)貼將完全消失。如下圖所示,在美國(guó)雪佛蘭開(kāi)始走最后一輪促銷(xiāo)。 Bolt是2...
文/VR陀螺? ? ? ?新年伊始,伴隨著一系列5G政策利好,運(yùn)營(yíng)商明顯加快了XR(VR、AR、MR統(tǒng)稱(chēng))布局的腳步,XR作為5G的重要場(chǎng)景之一,圍繞著新一輪通信技術(shù)變革,運(yùn)營(yíng)商的XR搶灘之戰(zhàn)已經(jīng)打響。? ? ? ?3月19日,在HTC舉辦的V2EC大會(huì)上,中國(guó)移動(dòng)正式宣布與HTC Vive戰(zhàn)略合作,從終端、內(nèi)容平臺(tái)、開(kāi)發(fā)者生態(tài)多方面整合資源,推動(dòng)5G+VR的應(yīng)用落地。不久前,中...
據(jù)預(yù)測(cè),2021年的全球半導(dǎo)體產(chǎn)業(yè)增速約為12%,而存儲(chǔ)技術(shù)增速則將達(dá)到19%,產(chǎn)值也會(huì)達(dá)到1460億美元,其中就包括了存儲(chǔ)器在車(chē)用市場(chǎng)的增長(zhǎng)。 自動(dòng)駕駛、電力驅(qū)動(dòng)、車(chē)聯(lián)網(wǎng)這些前沿的技術(shù)正在深刻影響著汽車(chē)供應(yīng)鏈,給各種半導(dǎo)體器件創(chuàng)造了巨大的增長(zhǎng)空間,以前在汽車(chē)中存在感很少的存儲(chǔ)器,將會(huì)在這次變革扮演重要的角色。 大升級(jí) “車(chē)用存儲(chǔ)器是一個(gè)潛力非...

史海拾趣

問(wèn)答坊 | AI 解惑

光纖收發(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)答∨

STC真的是手機(jī)中的戰(zhàn)斗機(jī)?

看到有個(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)答∨

Protell99se漢字補(bǔ)丁

很好用的,不用漢化就能放置漢字…

查看全部問(wèn)答∨

怎么學(xué)好數(shù)字信號(hào)處理!

怎么學(xué)好數(shù)字信號(hào)處理!…

查看全部問(wèn)答∨

routeShow命令求助

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 的定義?

請(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)答∨

多片DSP的JTAG連接

如題,如何進(jìn)行兩片DSP的JTAG的串行連接問(wèn)題,連接后他們的仿真是怎么區(qū)分對(duì)哪個(gè)DSP進(jìn)行的,片子是TMS320VC5502和TMS320C6713…

查看全部問(wèn)答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車(chē)開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 法库县| 平泉县| 江口县| 东安县| 南康市| 台北县| 芜湖县| 长寿区| 陕西省| 忻城县| 繁昌县| 许昌县| 镇原县| 宿松县| 洪雅县| 阿巴嘎旗| 德阳市| 黔西| 无锡市| 新河县| 台前县| 巢湖市| 监利县| 桃园县| 陕西省| 中江县| 赤壁市| 上思县| 永川市| 获嘉县| 常宁市| 揭东县| 拉萨市| 泸西县| 麻栗坡县| 浦县| 淮北市| 汉沽区| 共和县| 保山市| 团风县|