arm支援16個協處理器,在程式執行過程中,每個協處理器忽略屬於arm處理器和其他協處理器指令,當乙個協處理器硬體不能執行屬於她的協處理器指令時,就會產生乙個未定義的異常中斷,在異常中斷處理程式中,可以通過軟體模擬該硬體的操作,比如,如果系統不包含向量浮點運算器,則可以選擇浮點運算軟體模擬包來支援向量浮點運算
arm協處理器指令包括如下三類:
1用於arm處理器初始化arm協處理器的資料操作
2:用於arm處理器的暫存器和arm協處理器的暫存器間的資料傳送操作
3:用於在arm協處理器的暫存器和記憶體單元之間傳送資料
這些指令包括如下5條
cdp協處理器資料操作指令
ldc協處理器資料讀入指令
stc協處理器資料寫入指令
mcr arm暫存器到協處理器暫存器的資料傳送指令
mrc 協處理器暫存器到arm暫存器的資料傳送指令
使用方法:
cdp p5, 2,c12,c10,c3,4 ;協處理器p5的操作初始化,其中操作碼1為2,操作碼2為4,目標暫存器為c12,源運算元暫存器位c10,和c3
ldc 指令從一系列連續的記憶體單元將資料讀取到協處理器的暫存器中,如果協處理器不能成功的執行該操作,將產生未定義的指令異常操作
例項:ldc p6, cr4,[r2,#
4];r2為arm暫存器,指令讀取記憶體單元r2+4的字資料,傳送到協處理器p6的cr4暫存器中
stc(協處理器資料寫入指令)
stc指令將協處理器的暫存器中的資料寫入一些列記憶體單元中
例項:stc p8,cr8,[r2,#
4]! ;r2為arm暫存器,
指令將協處理器p8的cr8暫存器中的字資料寫入到記憶體單元(r2+4)中,
然後執行r2=r2+4操作
mcr(arm暫存器到協處理器暫存器的資料傳送指令)
mcr 指令將arm處理器的暫存器中的資料傳送到協處理器的暫存器中,如果協處理器不能成功執行該操作,將產生未定義的指令異常中斷
例項mcr p14,
3,r7,c7,c11,6 ;指令從arm暫存器中將資料傳送到協處理器p14的暫存器中,
其中r7為arm暫存器,存放源運算元,c7和c11位協處理器
暫存器,為目標暫存器,操作碼1為3,操作碼2為6
mrc協處理器暫存器到arm暫存器的資料傳送指令
mrc指令將協處理器暫存器中的數值傳送到arm的暫存器中,如果協處理器不能成功的執行這些操作,那麼將產生未定義的指令異常中斷
例項mrc p15,
2,r5,c0,c2,4 ;指令將協處理器p15暫存器中的資料傳送到arm暫存器中,
其中,r5為arm暫存器,是目標暫存器,c0和c2為協處理器
暫存器,存放源運算元,操作碼1為2,操作碼2為4
ARM指令協處理器處理指令
arm支援16個協處理器,在程式執行過程中,每個協處理器忽略屬於arm處理器和其他協處理器指令,當乙個協處理器硬體不能執行屬於她的協處理器指令時,就會產生乙個未定義的異常中斷,在異常中斷處理程式中,可以通過軟體模擬該硬體的操作,比如,如果系統不包含向量浮點運算器,則可以選擇浮點運算軟體模擬包來支援向...
ARM協處理器處理指令介紹
arm支援16個協處理器,在程式執行過程中,每個協處理器忽略屬於arm處理器和其他協處理器指令,當乙個協處理器硬體不能執行屬於她的協處理器指令時,就會產生乙個未定義的異常中斷,在異常中斷處理程式中,可以通過軟體模擬該硬體的操作,比如,如果系統不包含向量浮點運算器,則可以選擇浮點運算軟體模擬包來支援向...
ARM指令集 協處理器指令
arm 微處理器可支援多達 16 個協處理器,用於各種協處理操作,在程式執行的過程中,每個協處理器只執行針對自身的協處理指令,忽略 arm 處理器和其他協處理器的指令。arm 的協處理器指令主要用於 arm 處理器初始化 arm 協處理器的資料處理操作,以及在arm 處理器的暫存器和協處理器的暫存器...