新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Android的ARM匯編語言系列之一:ARM匯編語言開篇

        基于Android的ARM匯編語言系列之一:ARM匯編語言開篇

        作者: 時間:2016-11-09 來源:網絡 收藏
        章節列表

        之一:ARM匯編語言開篇
        之二:C/C++程序生成ARM匯編程序的過程分析
        之三:ARM匯編語言程序結構
        之四:ARM處理器的尋址方式
        之五:ARM指令集與Thumb指令集
        之六:NEON指令集與VFP指令集

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

        這是博文的開篇文章,這里會先介紹一下ARM處理器的大致分類和作用。

        一 ARM處理器與ARM指令集

        整個ARM處理器被分為三個部分:

        • Classic
        • Embedded
        • Application

        Classic被稱為經典系列。

        ARM1~ARM11一直都以數字來命名,ARM12以后改為用Cortex命名。Cortex有以下幾個分類:

        • Cortex-A:廣泛用于智能手機、上網本、電子書以及數字電視等。
        • Cortex-M:用于微控制領域,該系列的特點是高能效和低功耗
        • Cortex-R:用于支持深層嵌入式的餓實時應用,該系列的特點是低功耗、良好的中斷行為、卓越性能以及與現有平臺的高兼容性。

        盡管ARM處理器版本眾多,它是很多型號ARM處理器兼容一套ARM指令集,ARM架構與ARM處理器的對應關系如下圖所示:

        上圖涉及的技術,這里也簡單提一下:

        • VFP:為ARM處理器提供了浮點運算功能。
        • Jazelle:允許某些架構的硬件上加速運行Java字節碼。
        • SIMD:多媒體指令集。
        • TrustZone:安全性控制,避免產品受到外部的惡意攻擊。
        • NEON:NEON是SIMD體系結構的擴展,NEON在執行上比傳統的SIMD占用更少的指令周期

        Android最初選擇ARM作為平臺設備的處理器結構,并做了專門的優化。發展到Android4.1版本以后,已經全面支持ARM、x86和MIPS三種架構的處理器。

        二 ARM處理器的工作模式和工作狀態

        2.1 ARM處理器的工作模式

        ARM處理器共37個32位處理器,其中有31個通用寄存器和6個狀態寄存器。ARM處理器支持7種運行模式,分別是:

        • 用戶模式(usr):ARM處理器正常的程序運行狀態。
        • 快速中斷模式(flq):用于高速數據傳輸或通道處理。
        • 外部中斷模式(irq):用于通用的中斷處理。
        • 管理模式(svc):操作系統使用的保護模式。
        • 數據訪問終止模式(abt):當數據或指令預取終止時進入該模式,可用于虛擬存儲以及存儲保護。
        • 系統模式(sys):運行具有特短的操作系統任務。
        • 未定義指令終止模式(und):當未定義的指令執行時進入該模式。

        2.2 ARM處理器的工作狀態

        • ARM狀態:執行32位字對齊的ARM指令。
        • Thumb狀態:執行16位字對齊的ARM指令。

        Thumb狀態下的寄存器的命名與ARM有部分差異,它們的對應關系如下所示:

        • Thumb狀態下的R0~R7與ARM狀態下的R0~R7相同。
        • Thumb狀態下的CPSR與ARM狀態下的CPSR相同。
        • Thumb狀態下的FP與ARM狀態下的R11相同。
        • Thumb狀態下的IP與ARM狀態下的R12相同。
        • Thumb狀態下的SP與ARM狀態下的R13相同。
        • Thumb狀態下的LR與ARM狀態下的R14相同。
        • Thumb狀態下的PC與ARM狀態下的R15相同。


        關鍵詞: AndroidARM匯編語

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 襄汾县| 泰和县| 勃利县| 蒲城县| 新龙县| 镇江市| 桓仁| 福清市| 绿春县| 沙湾县| 锦州市| 泗阳县| 苏尼特左旗| 治县。| 大悟县| 广丰县| 周宁县| 达拉特旗| 鄂托克旗| 于都县| 东丰县| 右玉县| 翼城县| 深水埗区| 嘉峪关市| 来凤县| 阿拉善右旗| 甘谷县| 莒南县| 周口市| 辽中县| 丽江市| 石狮市| 巴青县| 科尔| 肃宁县| 镇江市| 钟祥市| 尚义县| 汉沽区| 涞源县|