16 ARM彙編自學筆記指令系統之協處理器指令

2021-08-03 11:58:58 字數 1731 閱讀 4629

協處理器指令

arm 微處理器可支援多達 16 個協處理器,用於各種協處理操作,在程式執行的過程中,每個協處理器只執行針對自身的協處理指令,忽略 arm 處理器和其他協處理器的指令。arm 的協處理器指令主要用於 arm 處理器初始化 arm 協處理器的資料處理操作,以及在arm 處理器的暫存器和協處理器的暫存器之間傳送資料,和在 arm 協處理器的暫存器和儲存器之間傳送資料。arm 協處理器指令包括以下 5 條:

— cdp 協處理器數操作指令

— ldc 協處理器資料載入指令

— stc 協處理器資料儲存指令

— mcr arm處理器暫存器到協處理器暫存器的資料傳送指令

— mrc 協處理器暫存器到 arm處理器暫存器的資料傳送指令

1、cdp指令

cdp指令的格式為:cdp 協處理器編碼,協處理器操作碼 1,目的暫存器,源暫存器 1,源暫存器 2,協處理器操作碼 2。

cdp指令用於 arm處理器通知 arm協處理器執行特定的操作, 若協處理器不能成功完成特定的操作,則產生未定義指令異常。其中協處理器操作碼 1和協處理器操作碼 2為協處理器將要執行的操作,目的暫存器和源暫存器均為協處理器的暫存器,指令不涉及 arm處理器的暫存器和儲存器。指令示例:

cdp p3,2,c12,c10,c3,4 ;該指令完成協處理器 p3 的初始化

2、ldc指令

ldc指令的格式為:ldc 協處理器編碼, 目的暫存器,[ 源暫存器]

ldc指令用於將源暫存器所指向的儲存器中的字資料傳送到目的暫存器中,若協處理器不能成功完成傳送操作,則產生未定義指令異常。其中,選項表示指令為長讀取操作,如用於雙精度資料的傳輸。指令示例:

ldc p3,c4,[r0] ;將 arm 處理器的暫存器 r0 所指向的儲存器中的字資料傳送到協處理器 p3 的暫存器 c4 中。

3、stc指令

stc指令的格式為:stc 協處理器編碼, 源暫存器,[ 目的暫存器]

stc指令用於將源暫存器中的字資料傳送到目的暫存器所指向的儲存器中,若協處理器不能成功完成傳送操作,則產生未定義指令異常。其中,選項表示指令為長讀取操作,如用於雙精度資料的傳輸。指令示例:

stc p3,c4,[r0] ;將協處理器 p3 的暫存器 c4 中的字資料傳送到 arm 處理器的暫存器r0 所指向的儲存器中。

4、mcr指令

mcr指令的格式為:mcr 協處理器編碼,協處理器操作碼 1,源暫存器,目的暫存器 1,目的暫存器 2,協處理器操作碼 2。

mcr指令用於將 arm處理器暫存器中的資料傳送到協處理器暫存器中, 若協處理器不能成功完成操作,則產生未定義指令異常。其中協處理器操作碼 1和協處理器操作碼 2為協處理器將要執行的操作,源暫存器為 arm處理器的暫存器,目的暫存器 1和目的暫存器 2均為協處理器的暫存器。指令示例:

mcr p3,3,r0,c4,c5,6 ;該指令將 arm 處理器暫存器 r0 中的資料傳送到協處理器 p3 的暫存器 c4 和 c5 中。

5、mrc指令

mrc指令的格式為:mrc 協處理器編碼,協處理器操作碼 1,目的暫存器,源暫存器 1,源暫存器 2,協處理器操作碼 2。

mrc指令用於將協處理器暫存器中的資料傳送到 arm處理器暫存器中, 若協處理器不能成功完成操作,則產生未定義指令異常。其中協處理器操作碼 1和協處理器操作碼 2為協處理器將要執行的操作,目的暫存器為 arm處理器的暫存器,源暫存器 1和源暫存器 2均為協處理器的暫存器。指令示例:

mrc p3,3,r0,c4,c5,6 ;該指令將協處理器 p3 的暫存器中的資料傳送到 arm 處理器暫存器中。

15 ARM彙編自學筆記指令系統之移位指令(操作)

移位指令 操作 arm微處理器內嵌的桶型移位器 barrel shi f t er 支援資料的各種移位操作,移位操作在arm指令集中不作為單獨的指令使用,它只能作為指令格式中是乙個字段,在組合語言中表示為指令中的選項。例如,資料處理指令的第二個運算元為暫存器時,就可以加入移位操作選項對它進行各種移位...

06 ARM彙編自學筆記指令系統之分類與格式

三指令系統 arm 微處理器的指令的分類與格式 arm微處理器的指令集是載入 儲存型的,也即指令集僅能處理暫存器中的資料,而且處理結果都要放回暫存器中,而對系統儲存器的訪問則需要通過專門的載入 儲存指令來完成。arm微處理器的指令集可以分為跳轉指令 資料處理指令 程式狀態暫存器 psr 處理指令 載...

07 ARM彙編自學筆記指令系統之定址方式

arm 指令的定址方式 1.立即定址 立即定址也叫立即數定址,這是一種特殊的定址方式,運算元本身就在指令中給出,只要取出指令也就取到了運算元。這個運算元被稱為立即數,對應的定址方式也就叫做立即定址。例如以下 指令 add r0,r0,1 r0 r0 1 add r0,r0,0x3f r0 r0 0x...