<ruby id="rxdll"></ruby><strike id="rxdll"></strike>

    <rp id="rxdll"></rp>
      <del id="rxdll"><meter id="rxdll"></meter></del>
      <pre id="rxdll"><font id="rxdll"></font></pre>
        <pre id="rxdll"></pre>
      <p id="rxdll"><thead id="rxdll"></thead></p><dl id="rxdll"><progress id="rxdll"><form id="rxdll"></form></progress></dl>

      <ol id="rxdll"><thead id="rxdll"><track id="rxdll"></track></thead></ol>
      <i id="rxdll"><dfn id="rxdll"></dfn></i>
      <font id="rxdll"><meter id="rxdll"></meter></font>

        <mark id="rxdll"><dfn id="rxdll"></dfn></mark>
        • 軟件測試技術
        • 軟件測試博客
        • 軟件測試視頻
        • 開源軟件測試技術
        • 軟件測試論壇
        • 軟件測試沙龍
        • 軟件測試資料下載
        • 軟件測試雜志
        • 軟件測試人才招聘
          暫時沒有公告

        字號: | 推薦給好友 上一篇 | 下一篇

        ARM基礎知識二

        發布: 2008-8-04 10:58 | 作者: 網絡轉載 | 來源: 網絡轉載 | 查看: 51次 | 進入軟件測試論壇討論

        領測軟件測試網

        ***************************************************************

        程序狀態寄存器

        ***************************************************************
          CPSR(當前程序狀態寄存器)在任何處理器模式下被訪問。它包含了條件標志位、中斷禁止位、當前處理器模式標志以及其他的一些控制和狀態位。每一種處理器

          模式下都有一個專用的物理狀態寄存器,稱為SPSR(備份程序狀態寄存器)。當特定的異常中斷發生時,這個寄存器用于存放當前程序狀態寄存器的內容。在異常中斷退出時,可以用SPSR來恢復CPSR。由于用戶模式和系統模式不是異常

          中斷模式,所以他沒有SPSR。當用戶在用戶模式或系統模式訪問SPSR,將產生不可預知的后果。

          CPSR格式如下所示。SPSR和CPSR格式相同。

         31  30  29  28  27           26           7  6  5  4  3  2  1  0
         N   Z   C   V   Q          DNM(RAZ)       I  F  T  M4 M3 M2 M1 M0


          ***條件標志位***

          N——本位設置成當前指令運算結果的bit[31]的值。當兩個表示的有符號整數運算時,n=1表示運算結果為負數,n=0表示結果為正書或零。

          z——z=1表示運算的結果為零;z=0表示運算的結果不為零。對于CMP指令,Z=1表示進行比較的兩個數大小相等。

          C——下面分四種情況討論C的設置方法:

           在加法指令中(包括比較指令CMP),當結果產生了進位,則C=1,表示無符號運算發生上溢出;其他情況C=0。
           在減法指令中(包括減法指令CMP),當運算中發生錯位,則C=0,表示無符號運算數發生下溢出;其他情況下C=1。
           對于包含移位操作的非加堿運算指令,C中包含最后一次溢出的的位的數值
           對于其他非加減運算指令,C位的值通常不受影響

          V——對于加減運算指令,當操作數和運算結果為二進制的補碼表示的帶符號數時,V=1表示符號為溢出;通常其他指令不影響V位。

          ***Q標識位***

          在ARM V5的E系列處理器中,CPSR的bit[27]稱為q標識位,主要用于指示增強的dsp指令是否發生了溢出。同樣的spsr的bit[27]位也稱為q標識位,用于在異常中

          斷發生時保存和恢復CPSR中的Q標識位。

          在ARM V5以前的版本及ARM V5的非E系列的處理器中,Q標識位沒有被定義。

          ***CPSR中的控制位***

          CPSR的低八位I、F、T、M[4:0]統稱為控制位。當異常中斷發生時這些位發生變化。在特權級的處理器模式下,軟件可以修改這些控制位。

          **中斷禁止位:當I=1時禁止IRQ中斷,當F=1時禁止FIQ中斷

          **T控制位:T控制位用于控制指令執行的狀態,即說明本指令是ARM指令還是Thumb指令。對于ARM V4以更高版本的T系列ARM處理器,T控制位含義如下:

        T=0表示執行ARM指令
        T=1表示執行Thumb指令

          對于ARM V5以及更高版本的非T系列處理器,T控制位的含義如下
         
        T=0表示執行ARM指令
        T=1表示強制下一條執行的指令產生未定指令中斷

          ***M控制位***
          M控制位控制處理器模式,具體含義如下:

        M[4:0]       處理器模式      可訪問的寄存器
        ob10000  user                  pc,r14~r0,CPSR
        0b10001  FIQ                   PC,R14_FIQ-R8_FIQ,R7~R0,CPSR,SPSR_FIQ
        0b10010  IRQ                   PC,R14_IRQ-R13_IRQ,R12~R0,CPSR,SPSR_IRQ
        0B10011  SUPERVISOR     PC,R14_SVC-R13_SVC,R12~R0,CPSR,SPSR_SVC
        0b10111  ABORT             PC,R14_ABT-R13_ABT,R12~R0,CPSR,SPSR_ABT
        0b11011  UNDEFINEED     PC,R14_UND-R8_UND,R12~R0,CPSR,SPSR_UND
        0b11111  SYSTEM           PC,R14-R0,CPSR(ARM V4以及更高版本)

          ***CPSR中的其他位***

          這些位用于將來擴展。應用軟件不要操作這些位。

        延伸閱讀

        文章來源于領測軟件測試網 http://www.k11sc111.com/

        TAG: arm ARM 基礎 知識


        關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
        版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
        北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
        技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

        軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

        国产女主播精品_国产片婬乱18一级毛片视频_国产午夜激无码av毛片不卡_国产精品欧美久久久天天影院
          <ruby id="rxdll"></ruby><strike id="rxdll"></strike>

          <rp id="rxdll"></rp>
            <del id="rxdll"><meter id="rxdll"></meter></del>
            <pre id="rxdll"><font id="rxdll"></font></pre>
              <pre id="rxdll"></pre>
            <p id="rxdll"><thead id="rxdll"></thead></p><dl id="rxdll"><progress id="rxdll"><form id="rxdll"></form></progress></dl>

            <ol id="rxdll"><thead id="rxdll"><track id="rxdll"></track></thead></ol>
            <i id="rxdll"><dfn id="rxdll"></dfn></i>
            <font id="rxdll"><meter id="rxdll"></meter></font>

              <mark id="rxdll"><dfn id="rxdll"></dfn></mark>