<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>

新聞中心

EEPW首頁(yè) > 學(xué)習方法與實(shí)踐 > ARM基礎知識連載(3)

ARM基礎知識連載(3)

——
作者: 時(shí)間:2007-08-03 來(lái)源: 收藏

體系中通常有以下3種方式控制程序的執行流程:

**在正常執行過(guò)程中,每執行一條指令,程序計數器(PC)的值加4個(gè)字節;每執行一條Thumb指令,程序計數器寄存器(PC)加2個(gè)字節。整個(gè)過(guò)程是按順序執行

。

**跳轉指令,程序可以跳轉到特定的地址標號處執行,或者跳轉到特定的子程序處執行。其中,B指令用于執行跳轉操作;BL指令在執行跳轉操作同時(shí),保存子程

序的返回地址;BX指令在執行跳轉操作同時(shí),根據目標地址為可以將程序切換到Thumb狀態(tài);BLX指令執行3個(gè)操作,跳轉到目標地址處執行,保存子程序的返回

地址,根據目標地址為可以將程序切換到Thumb狀態(tài)。

**當異常中斷發(fā)生時(shí),系統執行完當前指令后,將跳轉到相應的異常中斷處理程序處執行。當異常中斷處理程序執行完成后,程序返回到發(fā)生中斷指令的下條指

令處執行。在進(jìn)入異常中斷處理程序時(shí),要保存被中斷程序的執行現場(chǎng),從異常中斷處理程序退出時(shí),要恢復被中斷程序的執行現場(chǎng)。

中異常中斷的種類(lèi)

**復位(RESET)**
當處理器復位引腳有效時(shí),系統產(chǎn)生復位異常中斷,程序跳轉到復位異常中斷處理程序處執行。復位異常中斷通常用在下面幾種情況下:系統加電時(shí);系統復位時(shí);跳轉到復位中斷向量處執行成為軟復位。

**未定義的指令**
當ARM處理器或者是系統中的協(xié)處理器認為當前指令未定義時(shí),產(chǎn)生未定義的指令異常中斷,可以通過(guò)改異常中斷機制仿真浮點(diǎn)向量運算。

**軟件中斷**
這是一個(gè)由用戶(hù)定義的中斷指令??捎糜谟脩?hù)模式下的程序調用特權操作指令。在實(shí)時(shí)操作系統中可以通過(guò)該機制西線(xiàn)系統功能調用。

**指令與取終止(PrefechAbort)**
如果處理器預取的指令的地址不存在,或者該地址不允許當前指令訪(fǎng)問(wèn),當被預取的指令執行時(shí),處理器產(chǎn)生指令預取終止異常中斷。

**數據訪(fǎng)問(wèn)終止(DATAABORT)
如果數據訪(fǎng)問(wèn)指令的目標地址不存在,,或者該地址不允許當前指令訪(fǎng)問(wèn),處理器產(chǎn)生數據訪(fǎng)問(wèn)終止異常中斷

**外部中斷請求(IRQ)**
當處理器的外部中斷請求引腳有效,而且CPSR的寄存器的I控制位被清除時(shí),處理器產(chǎn)生外部中斷請求異常中斷。系統中個(gè)外設通過(guò)該異常中斷請求處理服務(wù)。

**快速中斷請求(FIQ)**
當處理器的外部快速中斷請求引腳有效,而且CPSR的F控制位被清除時(shí),處理器產(chǎn)生外部中斷請求異常中斷

異常中斷向量表及異常中斷優(yōu)先級
中斷向量表指定了個(gè)異常中斷及其處理程序的對應關(guān)系。他通常存放在存儲地址的低端。在A(yíng)RM體系中,異常中斷向量表的大小為32字節,其中每個(gè)異常中斷占據4個(gè)字節大小,保留了4個(gè)字節空間。
每個(gè)異常中斷對應的中斷向量表中的4個(gè)字節的空間中存放了一個(gè)跳轉指令或者一個(gè)向PC寄存器中賦值的數據訪(fǎng)問(wèn)指令。通過(guò)這兩種指令,程序將跳轉到相應的異常中斷處理程序處執行。當幾個(gè)異常中斷同時(shí)發(fā)生時(shí),就必須按照一定的次序來(lái)處理這些異常中斷。

各個(gè)異常中斷的中斷向量地址以及中斷的處理優(yōu)先級
中斷向量地址           異常中斷類(lèi)型             異常中斷模式               優(yōu)先級(6最低)
0x00                   復位                     特權模式                   1
0x04                   未定義的指令             未定義指令終止模式         6
0x08                   軟件中斷                 特權模式                   6
0x0C                   指令預取終止             終止模式                   5
0x10                   數據訪(fǎng)問(wèn)終止             終止模式                   2
0x14                   保留                     未使用                     未使用
0x18                   外部中斷請求             IRQ模式                    4
0x1C                   快速中斷請求             FIQ模式                    3



關(guān)鍵詞: ARM

評論


相關(guān)推薦

技術(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>