ARM彙編指令MCR MRC學習

2021-10-11 22:46:26 字數 4307 閱讀 1784

mcr指令將arm處理器的暫存器中的資料傳送到協處理器的暫存器中。如果協處理器不能成功地執行該操作,將產生未定義的指令異常中斷。

指令的語法格式:

mcr{} p15, 0, , ,

mcr2 p15, 0, , ,

其中,為指令執行的條件碼。當忽略時指令為無條件執行。mcr2中,為ob1111,指令為無條件執行指令。

為協處理器將執行的操作的操作碼。對於cp15協處理器來說, 永遠為0b000,當不為0b000時,該指令操作結果不可預知。

作為元暫存器的arm暫存器,其值被傳送到得協處理器暫存器中。

不能為pc,當其為pc時,指令操作結果不可預知。

作為目標暫存器的協處理器暫存器,其編號可能為c0,c1....c15。 附加的目標暫存器或者原運算元暫存器,用於區分同乙個編號的不同物理暫存器。當指令中不需要提供附加資訊時,將c0指定為,否則指令操作結果不可預知。  提供附加資訊,用於區別同乙個編號的不同物理暫存器。當指令中指定附加資訊時,省略或者將其指定為0,否則指令操作結果不可預知。

mrc指令將協處理器的暫存器中數值傳送到arm處理器的暫存器中。如果協處理器不能成功地執行該操作,將產生未定義的指令異常中斷。

指令的語法格式:

mrc{} p15, 0, , ,

mrc2 p15, 0, , ,

arm協處理器cp15,有16個暫存器,詳細看《arm體系結構與程式設計》

這裡我大概說一下mrc與mcr這兩個協處理器操作,參考《s3c2440》元件手冊p140頁

這兩個命令是用於arm暫存器與協處理器暫存器之間操作的,乙個協處理器與暫存器之前操作的例子就是,乙個浮點值在協處理器中轉換成32位整型,然後它的結果傳送到arm920t的暫存器中mrc。相反則為mcr。

最重要的應用就是通過命令從協處理器交換控制資訊到arm920t cpsr相應標識位

看幾個例子就明白

mrc    p2,5,r3,c5,c6

協處理器p2把c5和c6經過5操作的結果賦給r3

mcr    p6,0,r4,c5,c6

協處理器p6把r4執行0操作後將結果存放進c5

mrc    p3,9,r3,c5,c6,2

協處理器p3把c5和c6經過9操作(型別2)的結果賦給r3

詳細寫一下格式

mcr   p15,,,,

其中 就是可選的執行條件

p15就是指定哪個協處理器,arm920t好像有兩個乙個15乙個14

為協處理器將要執行的操作的操作碼,對於cp15來說,永遠為ob00,即0,如果不是,結果不同預知

作為源暫存器的arm暫存器

目標暫存器的協處理器暫存器

為附加的目標暫存器或者源運算元暫存器,用於區分同乙個編號的不同物理暫存器,如果不需要,就將它設定為c0,否則結果不可預知

附加資訊,用於區別同一編號的不同物理暫存器,如果省略或者為0,就表示不附加,如果不是,後果不可預知

mrc是協處理器命令。用於讀取協處理器中的暫存器的資料到arm處理器的暫存器裡面。這句話的意思應該是讀協處理器中的暫存器資料到arm處理器的r0裡面。應該是arm訪問mmu,一般cp15就是mmu。

p#, ,rd,cn,cm 

mrc 從協處理器移到arm7暫存器(l=1) 

mcr 從arm7暫存器移到協處理器(l=0) 

兩個字元的條件** 

p# 被請求得協處理器的惟一標識苻 

計算乙個常量並放到cp opc域 

rd 是乙個表示式計算arm7有效暫存器序號 

cn 和cm 是計算有效協處理器暫存器crn crm序號 

計算乙個常量,並放到cp域 

4.13.6 舉例 

mrc 2,5,r3,c5,c6 ;請求協處理器2 執行操作5 ,運算元為c5和c6, 

; 傳送結果到r3 (單次32位字) 

mcr 6,0,r4,c6 ; 請求協處理器6執行操作0,運算元為r4 

;結果送到c6 

來自arm7 資料手冊

將協處理器p15的暫存器中的資料傳送到arm處理器的暫存器r0中,其中1是協處理器操作碼1,0是協處理器操作碼2,c1存放第乙個運算元的協處理器暫存器,c0存放第二個運算元的協處理器暫存器

讀取控制暫存器,這包括 mmu,cache,writebuffer 的開啟與關閉. 

讀出修改後再用 mcr p15,0,r0,c1,c0,0 寫回去.

mcr指令將arm處理器的暫存器中的資料傳送到協處理器的暫存器中。如果協處理器不能成功地執行該操作,將產生未定義的指令異常中斷。

指令的語法格式:

mcr{} p15, 0, , ,

mcr2 p15, 0, , ,

其中,為指令執行的條件碼。當忽略時指令為無條件執行。mcr2中,為ob1111,指令為無條件執行指令。

為協處理器將執行的操作的操作碼。對於cp15協處理器來說, 永遠為0b000,當不為0b000時,該指令操作結果不可預知。

作為元暫存器的arm暫存器,其值被傳送到得協處理器暫存器中。

不能為pc,當其為pc時,指令操作結果不可預知。

作為目標暫存器的協處理器暫存器,其編號可能為c0,c1....c15。 附加的目標暫存器或者原運算元暫存器,用於區分同乙個編號的不同物理暫存器。當指令中不需要提供附加資訊時,將c0指定為,否則指令操作結果不可預知。  提供附加資訊,用於區別同乙個編號的不同物理暫存器。當指令中指定附加資訊時,省略或者將其指定為0,否則指令操作結果不可預知。

mrc指令將協處理器的暫存器中數值傳送到arm處理器的暫存器中。如果協處理器不能成功地執行該操作,將產生未定義的指令異常中斷。

指令的語法格式:

mrc{} p15, 0, , ,

mrc2 p15, 0, , ,

arm協處理器cp15,有16個暫存器,詳細看《arm體系結構與程式設計》

這裡我大概說一下mrc與mcr這兩個協處理器操作,參考《s3c2440》元件手冊p140頁

這兩個命令是用於arm暫存器與協處理器暫存器之間操作的,乙個協處理器與暫存器之前操作的例子就是,乙個浮點值在協處理器中轉換成32位整型,然後它的結果傳送到arm920t的暫存器中mrc。相反則為mcr。

最重要的應用就是通過命令從協處理器交換控制資訊到arm920t cpsr相應標識位

看幾個例子就明白

mrc    p2,5,r3,c5,c6

協處理器p2把c5和c6經過5操作的結果賦給r3

mcr    p6,0,r4,c5,c6

協處理器p6把r4執行0操作後將結果存放進c5

mrc    p3,9,r3,c5,c6,2

協處理器p3把c5和c6經過9操作(型別2)的結果賦給r3

詳細寫一下格式

mcr   p15,,,,

其中 就是可選的執行條件

p15就是指定哪個協處理器,arm920t好像有兩個乙個15乙個14

為協處理器將要執行的操作的操作碼,對於cp15來說,永遠為ob00,即0,如果不是,結果不同預知

作為源暫存器的arm暫存器

目標暫存器的協處理器暫存器

為附加的目標暫存器或者源運算元暫存器,用於區分同乙個編號的不同物理暫存器,如果不需要,就將它設定為c0,否則結果不可預知

附加資訊,用於區別同一編號的不同物理暫存器,如果省略或者為0,就表示不附加,如果不是,後果不可預知

mrc是協處理器命令。用於讀取協處理器中的暫存器的資料到arm處理器的暫存器裡面。這句話的意思應該是讀協處理器中的暫存器資料到arm處理器的r0裡面。應該是arm訪問mmu,一般cp15就是mmu。

p#, ,rd,cn,cm 

mrc 從協處理器移到arm7暫存器(l=1) 

mcr 從arm7暫存器移到協處理器(l=0) 

兩個字元的條件** 

p# 被請求得協處理器的惟一標識苻 

計算乙個常量並放到cp opc域 

rd 是乙個表示式計算arm7有效暫存器序號 

cn 和cm 是計算有效協處理器暫存器crn crm序號 

計算乙個常量,並放到cp域 

4.13.6 舉例 

mrc 2,5,r3,c5,c6 ;請求協處理器2 執行操作5 ,運算元為c5和c6, 

; 傳送結果到r3 (單次32位字) 

mcr 6,0,r4,c6 ; 請求協處理器6執行操作0,運算元為r4 

;結果送到c6 

來自arm7 資料手冊

將協處理器p15的暫存器中的資料傳送到arm處理器的暫存器r0中,其中1是協處理器操作碼1,0是協處理器操作碼2,c1存放第乙個運算元的協處理器暫存器,c0存放第二個運算元的協處理器暫存器

讀取控制暫存器,這包括 mmu,cache,writebuffer 的開啟與關閉. 

讀出修改後再用 mcr p15,0,r0,c1,c0,0 寫回去.

ARM彙編指令MCR MRC學習

mcr指令將arm處理器的暫存器中的資料傳送到協處理器的暫存器中。如果協處理器不能成功地執行該操作,將產生未定義的指令異常中斷。指令的語法格式 mcr p15,0,mcr2 p15,0,其中,為指令執行的條件碼。當忽略時指令為無條件執行。mcr2中,為ob1111,指令為無條件執行指令。為協處理器將...

ARM彙編指令MCR MRC學習

mcr指令將arm處理器的暫存器中的資料傳送到協處理器的暫存器中。如果協處理器不能成功地執行該操作,將產生未定義的指令異常中斷。指令的語法格式 mcr p15,0,mcr2 p15,0,其中,為指令執行的條件碼。當忽略時指令為無條件執行。mcr2中,為ob1111,指令為無條件執行指令。為協處理器將...

ARM裝配說明MCR MRC學習

mcr指令arm資料暫存器傳送到協處理器暫存器。假設協處理器不能成功執行操作。會產生未定義指令中止。語法教學格式 mcr p15,0,mcr2 p15,0,當中。為指令執行的條件碼。當忽略時指令為無條件執行。mcr2中,為ob1111,指令為無條件執行指令。為協處理器將執行的操作的操作碼。對於cp1...