<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è) > 嵌入式系統 > 設計應用 > 協(xié)處理器及其他指令之:協(xié)處理器指令

協(xié)處理器及其他指令之:協(xié)處理器指令

作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò ) 收藏

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

9.1指令

體系結構允許通過(guò)增加來(lái)擴展指令集。最常用的是用于控制片上功能的系統協(xié)處理器。例如控制Cache和存儲管理單元的CP15寄存器。此外,還有用于浮點(diǎn)運算的浮點(diǎn)協(xié)處理器,各生產(chǎn)商還可以根據需要開(kāi)發(fā)自己的專(zhuān)用協(xié)處理器。

協(xié)處理器具有自己專(zhuān)用的寄存器組,它們的狀態(tài)由控制ARM狀態(tài)的指令的鏡像指令來(lái)控制。

程序的控制流指令由ARM處理器來(lái)處理,所有只能同數據處理和數據傳送有關(guān)。按照RISC的Load/Store體系原則,數據的處理和傳送指令是被清楚分開(kāi)的,所以它們有不同的指令格式。

ARM處理器支持16個(gè)協(xié)處理器,在程序執行過(guò)程中,每個(gè)協(xié)處理器忽略ARM和其他。當一個(gè)協(xié)處理器硬件不能執行屬于它的時(shí),將產(chǎn)生一個(gè)未定義指令異常中斷,在該異常中斷處理過(guò)程中,可以通過(guò)軟件仿真該硬件操作。如果,一個(gè)系統中不包含向量浮點(diǎn)運算器,則可以選擇浮點(diǎn)運算軟件包來(lái)支持向量浮點(diǎn)運算。

ARM協(xié)處理器可以部分地執行一條指令,而后產(chǎn)生中斷。如除法運算除數為0和溢出,這樣可以更好地處理運行時(shí)產(chǎn)生(run-time-generated)的異常。但是,指令的部分執行是由協(xié)處理器完成的,此過(guò)程對ARM來(lái)說(shuō)是透明的。當ARM處理器重新獲得執行時(shí),它將從產(chǎn)生異常的指令處開(kāi)始執行。

對某一個(gè)協(xié)處理器來(lái)說(shuō),并不一定用到協(xié)處理器指令中的所有的域。具體協(xié)處理器如何定義和操作完全由協(xié)處理器的制造商自己決定,因此ARM協(xié)處理器指令中的協(xié)處理器寄存器的標識符以及操作助記符也有各種不同的實(shí)現定義。程序員可以通過(guò)宏定義這些指令的語(yǔ)法格式。

ARM協(xié)處理器指令分以下3類(lèi)。

·協(xié)處理器數據操作。協(xié)處理器數據操作完全是協(xié)處理器內部操作,它完成協(xié)處理器寄存器的狀態(tài)改變。如浮點(diǎn)加運算,在浮點(diǎn)協(xié)處理器中兩個(gè)寄存器相加,結果放在第3個(gè)寄存器中。這類(lèi)指令包括CDP指令。

·協(xié)處理器數據傳送指令。這類(lèi)指令從寄存器讀取數據裝入協(xié)處理器寄存器,或將協(xié)處理器寄存器的數據裝入存儲器。因為協(xié)處理器可以支持自己的數據類(lèi)型,所以每個(gè)寄存器傳送的字數與協(xié)處理器有關(guān)。ARM處理器產(chǎn)生存儲器地址,但傳送的字節由協(xié)處理器控制。這類(lèi)指令包括LDC和STC指令。

·協(xié)處理器寄存器傳送指令。在某些情況下,需要ARM處理器和協(xié)處理器之間傳送數據。如一個(gè)浮點(diǎn)運算協(xié)處理器,FIX指令從協(xié)處理器寄存器取得浮點(diǎn)數據,將它轉換為整數,并將整數傳送到ARM寄存器中。經(jīng)常需要用浮點(diǎn)比較產(chǎn)生的結果來(lái)影響控制流,因此,比較結果必須傳送到ARM的CPSR中。這類(lèi)協(xié)處理器寄存器傳送指令包括MCR和MRC。

表9.1列出了所有協(xié)處理器處理指令。

表9.1 協(xié)處理器指令

助記符

操作

CDP

協(xié)處理器數據操作

LDC

裝載協(xié)處理器寄存器

MCR

從ARM寄存器傳數據到協(xié)處理器寄存器

MRC

從協(xié)處理器寄存器傳數據到ARM寄存器

STC

存儲協(xié)處理器寄存器

9.1.1協(xié)處理器數據操作指令CDP

1.指令編碼格式

此指令用于控制數據在協(xié)處理器寄存器內部的操作。通常情況下該指令由協(xié)處理器完成,如果協(xié)處理器不能成功地執行該操作,將產(chǎn)生未定義指令異常。

指令的編碼格式如圖9.1所示。

圖9.1CDP指令編碼格式


上一頁(yè) 1 2 3 4 5 6 下一頁(yè)

評論


相關(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>