<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

ARM工作模式

作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò ) 收藏
一、存儲器格式(字對齊):

Arm體系結構將存儲器看做是從零地址開(kāi)始的字節的線(xiàn)性組合。從零字節到三字節放置第一個(gè)存儲的字(32位)數據,從第四個(gè)字節到第七個(gè)字節放置第二個(gè)存儲的字數據,一次排列。作為32位的微處理器,arm體系結構所支持的最大尋址空間為4GB。

本文引用地址:http://dyxdggzs.com/article/201611/322376.htm

存儲器格式

1、大端格式:高字節在低地址,低字節在高地址;

2、小端格式:高字節在高地址,低字節在低地址;

指令長(cháng)度:

Arm微處理器的指令長(cháng)度是32位的,也可以為16位(thumb狀態(tài)下)。Arm微處理器中支持字節(8位),半字(16位),字(32位)三種數據類(lèi)型,其中,字需要4字節對齊,半字需要2字節對齊。

注:所謂的指令長(cháng)度是一條完整的指令的長(cháng)度,而不是單純的mov這3個(gè)字母長(cháng)度

二、ARM體系的CPU有兩種工作狀態(tài)

   1、ARM狀態(tài):處理器執行32位的字對齊的ARM指令;

2、Thumb狀態(tài):處理器執行16位的、半字對齊的Thumb指令;

在程序運行的過(guò)程中,可以在兩種狀態(tài)之間進(jìn)行相應的轉換。處理器工作狀態(tài)的轉變并不影響處理器的工作模式和相應寄存器中的內容。

CPU上電處于A(yíng)RM狀態(tài)

三、ARM體系的CPU有以下7種工作模式:

1、用戶(hù)模式(Usr):用于正常執行程序;

2、快速中斷模式(FIQ):用于高速數據傳輸;

3、外部中斷模式(IRQ):用于通常的中斷處理;

4、管理模式(svc):操作系統使用的保護模式;

5、數據訪(fǎng)問(wèn)終止模式(abt):當數據或指令預取終止時(shí)進(jìn)入該模式,可用于虛擬存儲以及存儲保護;

6、系統模式(sys):運行具有特權的操作系統任務(wù);

7、未定義指令中止模式(und):當未定義的指令執行時(shí)進(jìn)入該模式,可用于支持硬件;

Arm的工作模式切換有兩種方法:

被動(dòng)切換:在arm運行的時(shí)候產(chǎn)生一些異?;蛘咧袛鄟?lái)自動(dòng)進(jìn)行模式切換

主動(dòng)切換:通過(guò)軟件改變,即軟件設置寄存器來(lái)經(jīng)行arm的模式切換,應為arm的工作模式都是可以通過(guò)相應寄存器的賦值來(lái)切換的。

Tips:當處理器運行在用戶(hù)模式下,某些被保護的系統資源是不能被訪(fǎng)問(wèn)的。

除用戶(hù)模式外,其余6種工作模式都屬于特權模式;

特權模式中除了系統模式以外的其余5種模式稱(chēng)為異常模式;

大多數程序運行于用戶(hù)模式;

進(jìn)入特權模式是為了處理中斷、異常、或者訪(fǎng)問(wèn)被保護的系統資源;

四、寄存器

ARM有31個(gè)通用的32位寄存器,6個(gè)程序狀態(tài)寄存器,共分為7組,有些寄存器是所有工作模式共用的,還有一些寄存器專(zhuān)屬于每一種工作模式;

R13——棧指針寄存器,用于保存堆棧指針;

R14——程序連接寄存器,當執行BL子程序調用指令時(shí),R14中得到R15的備份,而當發(fā)生中斷或異常時(shí),R14保存R15的返回值;

R15——程序計數器;

快速中斷模式有7個(gè)備份寄存器R8—R14,這使得進(jìn)入快速中斷模式執行很大部分程序時(shí),甚至不需要保存任何寄存器;

其它特權模式都含有兩個(gè)獨立的寄存器副本R13、R14,這樣可以令每個(gè)模式都擁有自己的堆棧指針和連接寄存器;

五、當前程序狀態(tài)寄存器(CPSR)

CPSR中各位意義如下:

T位:1——CPU處于Thumb狀態(tài), 0——CPU處于A(yíng)RM狀態(tài);

I、F(中斷禁止位): 1——禁止中斷, 0——中斷使能;

工作模式位:可以改變這些位,進(jìn)行模式切換;

六、程序狀態(tài)保存寄存器(SPSR)

當切換進(jìn)入某一個(gè)特權模式時(shí),SPSR保存前一個(gè)工作模式的CPSR值,這樣,當返回前一個(gè)工作模式時(shí),可以將SPSR的值恢復到CPSR中;

七、模式切換

當異常發(fā)生,CPU進(jìn)入相應的異常模式時(shí),以下工作是由CPU自動(dòng)完成的:

1、在異常模式的R14中保存前一工作模式的下一條即將執行的指令地址;

2、將CPSR的值復制到異常模式的SPSR中;

3、將CPSR的工作模式設為該異常模式對應的工作模式;

4、令PC值等于這個(gè)異常模式在異常向量表中的地址,即跳轉去執行異常向量表中的相應指令;

從異常工作模式退回到之前的工作模式時(shí),需要由軟件來(lái)完成以下工作:

1、將異常模式的R14減去一個(gè)適當的值(4或8)后賦給PC寄存器;

2、將異常模式SPSR的值賦給CPSR;



關(guān)鍵詞: ARM工作模

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>