ARM支持協(xié)處理器。在程序執(zhí)行過程中,每個協(xié)處理器忽略屬于ARM處理器和其他協(xié)處理器的指令。當(dāng)一個協(xié)處理器硬件不能執(zhí)行屬于它的協(xié)處理器指令時,將產(chǎn)生未定義指令異常中斷,在該異常中斷處理程序時,可以通過軟件模擬該硬件操作。比如,如果系統(tǒng)中不包含向量浮點(diǎn)運(yùn)算器,則可以選擇浮點(diǎn)運(yùn)算軟件模擬包來支持向量浮點(diǎn)運(yùn)算。
ARM協(xié)處理器可以部分地執(zhí)行一條指令,然后產(chǎn)生異常中斷,如像除法運(yùn)算中除數(shù)為0的情況。這些操作均由ARM協(xié)處理器決定,ARM處理器并不參與這些操作。同樣,ARM協(xié)處理器指令中協(xié)處理器的寄存器標(biāo)識符及操作類型助記符也由各種不同的實(shí)現(xiàn)定義,程序員可以通過宏定義這些指令的語法格式。
ARM協(xié)處理器指令包括以下3類。
·用于ARM處理器初始化ARM協(xié)處理器的數(shù)據(jù)處理操作。
·用于ARM處理器的寄存器和ARM協(xié)處理器的寄存器間的數(shù)據(jù)傳送操作。
·用于在ARM協(xié)處理器的寄存器和內(nèi)存單元之間傳送數(shù)據(jù)。
(1)CDP 協(xié)處理器數(shù)據(jù)操作指令
本指令是ARM處理器用于通知ARM協(xié)處理器執(zhí)行特定操作的。該操作中不涉及ARM寄存器和內(nèi)存單元。
(2)LDC 協(xié)處理器數(shù)據(jù)讀取指令
LDC指令從一系列連續(xù)的內(nèi)存單元將數(shù)據(jù)讀取到協(xié)處理器的寄存器中。如果協(xié)處理器不能成功地執(zhí)行該操作,則將產(chǎn)生未定義的指令異常中斷。
(3)STC 協(xié)處理器數(shù)據(jù)寫入指令
STC指令將協(xié)處理器寄存器中的數(shù)據(jù)寫入到一系列連續(xù)的內(nèi)存單元中。如果協(xié)處理器不能成功地執(zhí)行該操作,則將產(chǎn)生未定義的指令異常中斷。
(4)MCR ARM寄存器到協(xié)處理器寄存器的數(shù)據(jù)傳送指令
MCR指令將ARM處理器寄存器中的數(shù)據(jù)傳送到協(xié)處理器的寄存器中。如果協(xié)處理器不能成功地執(zhí)行該操作,則將產(chǎn)生未定義的指令異常中斷。
(5)MRC 協(xié)處理器寄存器到ARM寄存器的數(shù)據(jù)傳送指令
MRC指令將協(xié)處理器寄存器中的數(shù)值傳送到ARM處理器的寄存器中。如果協(xié)處理器不能成功地執(zhí)行該操作,則將產(chǎn)生未定義的指令異常中斷。
歡迎轉(zhuǎn)載,信息來源維庫電子市場網(wǎng)()
ks99