ARM學習筆記(三)

來源:互聯網
上載者:User

 

異常(Exceptions)
當正常的程式執流程發生暫時的停止時,稱之為異常。

  處理插斷要求,處理前保留現場以便處理完後返回;

   處理器允許多個異常同時發生,它們會按固定的優先順序被處理。

ARM體繫結構所支援的異常類型及其具體含義(按優先順序從高到低):
<!--[if !supportLists]-->1.  <!--[endif]-->複位:當處理器複位電平有效時產生複位異常;

<!--[if !supportLists]-->2.  <!--[endif]-->資料中止:當處理器指令訪問的資料地址不存在或不允許該指令訪問時;

<!--[if !supportLists]-->3.  <!--[endif]-->FIQ:當處理器的快速插斷要求引腳有效且CPSR中F位為0(為1時禁止FIQ)時;

<!--[if !supportLists]-->4.  <!--[endif]-->RIQ:當處理器的外部插斷要求引腳有效且CPSR中I位為0時;

<!--[if !supportLists]-->5.  <!--[endif]-->預取中止:當處理器預取指令的地址不存在或該地址不允許當前指令訪問時;

<!--[if !supportLists]-->6.  <!--[endif]-->未定義指令,SWI:當ARM處理器或副處理器遇到不能處理的指令時;

<!--[if !supportLists]-->7.  <!--[endif]-->軟體中斷。

對異常的響應
 

從異常返回
異常處理完後ARM處理器會執行以下兩個步驟從異常返回:

<!--[if !supportLists]-->1.  <!--[endif]-->將SPSR複製到CPSR;

<!--[if !supportLists]-->2.  <!--[endif]-->將串連寄存器LR的值減去相應的位移量後送到PC。

可以認為程式總是從複位例外處理常式開始執行的,因此複位例外處理常式不需要返回。

ARM儲存空間格式
ARM體繫結構將儲存空間看成是從0地址開始的位元組的線性組合;

ARM體繫結構可以用兩種格式儲存位元組資料,分別稱為大端格式(big-endian)和小端格式(little-endian)。分別如下表1和表2所示:

表1 bin-endian

31
 24
 23
 16
 15
 8
 7
 0
 
字單元A(地址為A:包括地址為A、A+1、A+2、A+3的位元組單元)
 
半字單元A(地址為A)
 半字單元A+2(地址為A+2)
 
位元組單元A(地址為A)
 位元組單元A+1
 位元組單元A+2
 位元組單元A+3
 

 

 

 

表2 little-endian

31
 24
 23
 16
 15
 8
 7
 0
 
字單元A(地址為A:包括地址為A、A+1、A+2、A+3的位元組單元)
 
半字單元A+2(地址為A+2)
 半字單元A (地址為A)
 
位元組單元A+3
 位元組單元A+2
 位元組單元A+1
 位元組單元A
 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.