【基於Android的ARM組合語言系列】之一:ARM組合語言開篇
阿新 • • 發佈:2019-02-17
【基於Android的ARM組合語言系列】章節列表
這是【基於Android的ARM組合語言系列】博文的開篇文章,這裡會先介紹一下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相同。