ARM協處理器主要用途 及其 指令CDP LDC STC MCR MRC介紹

ARM 311瀏覽
ARM協處理器主要用途 及其 指令CDP
LDC STC MCR MRC介紹

????ARM?微處理器可支持多達?16?個協處理器,用于各種協處理操作,在程序執行的過程中,每個協處理器只執行針對自身的協處理指令,忽略?ARM?處理器和其他協處理器的指令,ARM?的協處理器指令主要用于:

<1>????ARM?處理器初始化

<2>????ARM?協處理器的數據處理操作

<3>????ARM?協處理器的寄存器處理器的寄存器之間傳送數據

<4>????ARM?協處理器的寄存器存儲器之間傳送數據

?

ARM?協處理器指令包括以下5

l?????????CDP?協處理器數操作指令

l?????????LDC?協處理器數據加載指令

l?????????STC?協處理器數據存儲指令

l?????????MCR
ARM?
處理器寄存器到協處理器寄存器的數據傳送指令

l?????????MRC?協處理器寄存器到ARM?處理器寄存器的數據傳送指令

?

<1>?????CDP?指令

指令的格式為:

CDP{條件}?協處理器編碼,協處理器操作碼1,目的寄存器,源寄存器1,源寄存器2,協處理器操作碼2

CDP?指令用于ARM?處理器通知ARM?協處理器執行特定的操作,若協處理器不能成功完成特定的操作,則產生未定義指令異常。其中協處理器操作碼1?和協處理器操作碼2?為協處理器將要執行的操作,目的寄存器和源寄存器均為協處理器的寄存器,指令不涉及ARM?處理器的寄存器和存儲器。

指令示例:

CDP P3?2?C12?C10?C3?4?;該指令完成協處理器P3?的初始化

?

<2>?????LDC?指令

指令的格式為:

LDC{條件}{L}?協處理器編碼,目的寄存器,[源寄存器]

LDC?指令用于將源寄存器所指向的存儲器中的字數據傳送到目的寄存器中,若協處理器不能成功完成傳送操作,則產生未定義指令異常。其中,{L}選項表示指令為長讀取操作,如用于雙精度數據的傳輸。

指令示例:

LDC P3??C4??[R0]?;將?ARM?處理器的寄存器?R0?所指向的存儲器中的字數據傳送到協處理器?P3?的寄存器?C4?中。

?

<3>?????STC?指令

指令的格式為:

STC{條件}{L}?協處理器編碼,源寄存器,[目的寄存器]

STC?指令用于將源寄存器中的字數據傳送到目的寄存器所指向的存儲器中,若協處理器不能成功完成傳送操作,則產生未定義指令異常。其中,{L}選項表示指令為長讀取操作,如用于雙精度數據的傳輸。

指令示例:

STC P3??C4??[R0]?;將協處理器?P3?的寄存器?C4?中的字數據傳送到?ARM?處理器的寄存器R0?所指向的存儲器中。

?

<4>?????MCR?指令(mov
arm to c
,可以這樣來記憶)

指令的格式為:

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{條件}?協處理器編碼,協處理器操作碼1,目的寄存器,源寄存器1,源寄存器2,協處理器操作碼2

MRC?指令用于將協處理器寄存器中的數據傳送到ARM?處理器寄存器中,若協處理器不能成功完成操作,則產生未定義指令異常。

其中協處理器操作碼1?和協處理器操作碼2?為協處理器將要執行的操作,目的寄存器為ARM?處理器的寄存器源寄存器1和源寄存器2?均為協處理器的寄存器。

指令示例:

MRC P3??3??R0??C4??C5??6?

七星彩走势图2元网官网