新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > GNU ARM匯編--(三)ARM處理器的基本原則

        GNU ARM匯編--(三)ARM處理器的基本原則

        作者: 時間:2016-11-26 來源:網絡 收藏
        這一篇的知識來源全部來自《ARM System Developers Guide》

        從編程人員的視角來看,arm核是由數據總線連接的功能單元組成,如下圖所示:

        本文引用地址:http://www.104case.com/article/201611/321728.htm

        數據通過數據總線流向處理器核心,這里的數據可以是將要執行的指令,也可以是數據項.上面的圖是Von Neumann體系的arm核,數據項和指令共用同一總線.而h哈佛結構體系的arm核就會用兩個不同的總線.

        就像所有的RISC處理器,arm采用load-store體系結構.也就是說它含有兩條不同的指令類型來出入處理器.loar指令將數據從內存拷貝到寄存器,store指令是將數據從寄存器拷貝到內存.沒有直接操作內存中數據的數據處理指令.數據的處理離不開寄存器.

        ARM指令一般有兩個源寄存器,Rn和Rm,和一個目的寄存器,Rd.ARM的一個重要特性是Rm可以在送入ALU之前被桶型移位器做預處理,這樣就會有很多形式的表達式和尋址方式.

        下面介紹ARM處理器的幾個關鍵分量:寄存器,當前程序狀態寄存器和流水線

        寄存器:

        通用目的寄存器可以保存數據或者地址.由字母r和編號數字來表示.所有的寄存器都是32bit大小.

        一共有18個活動的寄存器:16個數據寄存器和兩個程序狀態寄存器.數據寄存器由r0--r15表示.

        ARM處理器有3個寄存器分配為特殊的功能:r13,r14,r15

        r13通常用作棧指針(sp),存儲當前處理器工作模式下的棧頂;

        r14被稱作鏈接寄存器(lr),當發生調用時存放調用子程序的返回地址;

        r15被稱作程序計數器(pc),保存被處理器預取的下一條指令的地址.

        除了這16個數據寄存器,還有來年各個程序狀態寄存器:cpsr和spsr.處理器的當前工作模式決定了哪些寄存器是可見的.

        當前程序狀態寄存器:

        ARM核使用cpsr來顯示和控制內部的操作.通用程序狀態寄存器的內部如下:

        cpsr分為四個域,每個域有8位的寬度:flags,status,extension和control.control域包含處理器模式和狀態以及中斷屏蔽位.flags域包含condition flags.

        處理器模式:

        處理器模式決定了當前哪些寄存器是可用的以及cpsr本身的訪問權限.處理器模式分為特權模式和非特權模式:特權模式對cpsr有完全的讀寫控制.而非特權模式

        只能讀cpsr的control域但是仍可以讀寫condition flags.

        一共有7中處理器模式:六種特權模式(abort,fiq,irq,svc,system和undefined)和一種非特權模式(user).

        當試圖訪問內存失敗時處理器會進入abort模式,fiq和irq對應ARM處理器的兩種中斷級別.svc是系統reset后進入的模式,也是os kernel工作的模式.

        system模式是user模式的特殊版本,它有對cpsr的讀寫控制.undefined模式在處理器遇到未定以的指令或者不支持的操作時使用.

        user模式在應用程序下使用.

        Banked registers:


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宝山区| 北宁市| 南平市| 丰原市| 丽江市| 营口市| 恩平市| 宿松县| 宽城| 四川省| 廉江市| 洱源县| 明星| 洛南县| 伽师县| 秀山| 石泉县| 清远市| 磐石市| 若羌县| 利川市| 灵寿县| 叙永县| 呼玛县| 祁连县| 清丰县| 甘谷县| 临澧县| 屏南县| 晋宁县| 阿鲁科尔沁旗| 定州市| 诸暨市| 加查县| 法库县| 余干县| 威信县| 巧家县| 海南省| 玉山县| 竹溪县|