真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ARM匯編指令MRS和MSR有什么用

小編給大家分享一下  ARM匯編指令MRS和MSR有什么用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

醴陵網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),醴陵網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為醴陵上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個(gè)售后服務(wù)好的醴陵做網(wǎng)站的公司定做!

ARM中有兩條指令用于在狀態(tài)寄存器和通用寄存器之間傳送數(shù)據(jù)。

針對32位的ARM處理器,狀態(tài)寄存器就是一個(gè)32位長的寄存器。每個(gè)位的含義如下圖:
ARM匯編指令MRS和MSR有什么用

分成了4部分:

1,條件標(biāo)志位

N(Negative), Z(Zero), C(Carry), V(Verflow)統(tǒng)稱為條件標(biāo)志位。ARM指令可以根據(jù)CPSR中的這些條件標(biāo)志位來選擇性的執(zhí)行。

2,Q標(biāo)志位

ARM v5的E系列處理器中,CPSR的bit[27]稱為Q標(biāo)志位。主要用于指示增強(qiáng)的DSP指令是否發(fā)生了溢出。

3,控制位

I, F, T以及M[4:0]統(tǒng)稱為控制位。當(dāng)異常中斷發(fā)生時(shí),這些位發(fā)生變化。在特權(quán)級(jí)的處理器模式下,軟件可以修改這些控制位。

下表示控制位M[4:0]的含義:


M[4:0]

處理器模式

可訪問的寄存器

0b10000

用戶模式

PC,CPSR, R14~R0

0b10001

FIQ模式

PC,CPSR, SPSR_fiq,R14_fiq,R8_fiq, R7~R0

0b10010

IRQ模式

PC,CPSR, SPSR_irq,R14_irq,R13_irq,R12~R0

0b10011

管理模式

PC,CPSR, SPSR_svc,R14_svc,R13_svc,R12~R0

0b10111

中止模式

PC,CPSR, SPSR_abt,R14_abt,R13_abt, R12~R0

0b11011

未定義模式

PC,CPSR, SPSR_und,R14_und,R13_und, R12~R0

0b11111

系統(tǒng)模式

PC,CPSR(ARMv4及以上版本), R14~R0

4,保留位
 用于將來ARM版本的擴(kuò)展。

狀態(tài)寄存器訪問指令僅有兩天:

MRS: 狀態(tài)寄存器到通用寄存器的傳送指令。

MSR: 通用寄存器到狀態(tài)寄存器的傳送指令。

MRS指令介紹

MRS的指令編碼格式:


ARM匯編指令MRS和MSR有什么用
 指令的語法格式:

MRS{}, CPSR

MRS{}, SPSR

其中:

為指令執(zhí)行的條件碼。當(dāng)忽略時(shí)指令為無條件執(zhí)行。

為目標(biāo)寄存器。

指令操作的偽代碼:

C代碼

if ConditionPassed(cond) then   
    if R == 1 then  
        Rd = SPSR   
    else  
        Rd = CPSR

MSR指令使用的場合:

  • 通常通過“讀取-修改-寫回”操作序列修改狀態(tài)寄存器的內(nèi)容。MRS指令用于將狀態(tài)寄存器的內(nèi)容讀到通用寄存器中。

  • 當(dāng)異常允許嵌套時(shí),需要在進(jìn)入異常中斷之后,嵌套中斷發(fā)生之前保存當(dāng)前處理器模式對應(yīng)的SPSR。這時(shí)需要先通過MRS指令讀出SPSR的值,在用其他指令將SPSR值保存起來。

  • 在進(jìn)程切換時(shí)也需要保存當(dāng)前狀態(tài)寄存器的值。

MSR指令介紹

MRS的指令編碼格式:

這里分為兩種格式,一種是原操作數(shù)為通用寄存器, 另一種是源操作數(shù)是立即數(shù)。



 

指令的語法格式:

C代碼

MSR{} CPSR_, #  
MSR{} CPSR_  
MSR{} CPSR_, #  
MSR{} CPSR_

 其中:

為指令執(zhí)行的條件碼。當(dāng)忽略時(shí)指令為無條件執(zhí)行。

設(shè)置狀態(tài)寄存器中需要操作的位。狀態(tài)寄存器的32位可以分為4個(gè)8位的域:

    f: 指示bits[31 : 24],又名條件標(biāo)志位域

    s: 指示bits[23 : 16],又名狀態(tài)標(biāo)志位域

    x: 指示bits[15 : 8], 又名擴(kuò)展位域

    c: 指示bits[7 : 0],又名控制位
為將要傳送到狀態(tài)寄存器中的立即數(shù),該立即數(shù)的計(jì)算方式可以去照看

寄存器包含將要傳送到狀態(tài)寄存器中的數(shù)據(jù)。

指令的操作偽代碼:


ARM匯編指令MRS和MSR有什么用
 

指令的使用:
MSR指令通常用于恢復(fù)狀態(tài)寄存器的內(nèi)容或者改變寄存器的內(nèi)容。

當(dāng)退出異常中斷處理器程序時(shí),如果事先保存了狀態(tài)寄存器的內(nèi)容通常通過MSR指令將事先保存的狀態(tài)寄存器內(nèi)容恢復(fù)到狀態(tài)寄存器中。

當(dāng)需要修改狀態(tài)寄存器的內(nèi)容時(shí),通過“讀取-修改-寫回”指令序列完成。寫回操作也是通過MSR指令完成的。

處理器切換到特權(quán)模式,使用將要修改某個(gè)位域的示例:

C代碼

mrs r0, cpsr ;讀取cpsr中的值  
bic r0, r0, #0x1F ;修改,去除當(dāng)前處理器模式  
orr r0, r0, #0x13 ;修改,設(shè)置特權(quán)模式  
msr cpsr_c, r0 ;寫回,僅僅修改CPRS中的控制位

當(dāng)進(jìn)程切換到應(yīng)用場合,應(yīng)指定SPSR_fsxc來完全恢復(fù)。

看完了這篇文章,相信你對“  ARM匯編指令MRS和MSR有什么用”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


文章題目:ARM匯編指令MRS和MSR有什么用
轉(zhuǎn)載來源:http://weahome.cn/article/pogige.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部