ARM(advanced RISC machine) 代表三层意思:
一直代表ARM公司
一直代表ARM技能
一直代表ARM芯片
为三个代表。
1、ARM 8种作业形式
user | fiq | irq | svc | abort | undef | system | (mon[monitor]) |
非特权形式 | 快速中止请求(fast interrupt request ) | 中止请求 | 超级用户 | 预存取 | 未定义 | 系统(特权) | (contex-a特有形式(安全)) |
2、指令集:
ARM 指令集 — 32bit
thumb指令集 –16bit
contex-A处理器
16 and 32 thumb指令集
16 and 32 thumbEE指令集
3、ARM 约好
byte: 8bit
halfword: 16bit
word:32bit
doubleword:64-bit(8byte)
jazelle cores 可支撑 java bytecode.
4、一般ARM处理器有37 or 40 个 寄存器(regs) — 是这样核算的.r0–r7 有1种八组 r8-r12有5组x2中=10.r13有7组一种=7.r14也是7组一种=7,r15 1 ,cpsr 1 .spsr 6
8 + 10 + 7 + 7 + 1 + 1 + 6 = 40(contex – A)
40为contex-A 四核系列
其间1个为pc–(program counter)(r15)
1个cpsr(current program status register)
5个spsr(save program status register)
30个通用regs
其间r14为LR(link register)
r13为SP(stack pointer)
5、关于反常处理
反常品种有7中、形式有五种。反常会回来偏移量
偏移量: 反常事情 对应形式
0x1c FIQ FIQ
0x18 IRQ IRQ
0x14 ….
0x10 data abort ABORT
0x0c prefetch abort ABORT
0x08 software interrupt SVC
0x04 indefined instuction Undef
0x00 Reset svc
处理反常为四大步、三小步。
一:复制cpsr到spsr — 保存当时程序状况
二:设置cpst位:
1:改动处理器的状况进入ARM态(4 byte)(坚持word对齐)
2:改动处理器形式就如相对应的反常形式
3:设置中止进制位制止相应中止
三:保存回来地址到LR(r13)
四:设置pc为相应的偏移量(c15).
6、字节序:
条件为:多字节数据在存储器的寄存方位
低 低 小– 小端序
低 高 大–大端序
ARM以小端为主、可是巨细都支撑、
7、ARM 指令集简介
一切的arm指令集均为32-bits
大部分为单周期指令 — T = 1/F F=主频 如contex-A8为4F为1G. 那么1/1G = 1ns.so — 履行一条指令的时刻为1ns.
选用Load/Store 架构
8、ARM 协处理器 多达16 (cp1 – cp15)
9、关于jazelle 由ARM cores直接去履行.而不需要经过JVM.(买的ORCAL公司的接口)
Normal jvn:1.0
ARM9EJ: 5.5
10、关于指令流水线
ARM7 — 3条
ARM9 — 5条
ARM10E –6条
contex-A8 — 根据v7系统–13条流水线。
11、ARM条件履行
常用条件码:
EQ 0000 持平
NE 0001 不持平
GE 1010 大于等于
LT 1011 小于等于
GT 1100 大于
LE 1101 小于
AL 1110 疏忽
12、ARM数据处理指令机器码格局
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
31——–28 27–26 25 24—-21 20 19——16 15 —- 12 11——7 6–5 0 3—-0
指令条件码 I 指令操作码 S 榜首操作数 方针寄存器编码 移位数 移位方法 第二操作数
即:N E C V 判别是否当即数 是否影响CPSR 移位方法有LST LSR ASR ROR四种
13、关于当即数
怎么判别是否为当即数
打开之后判别零之间够不够八位
如下面几个数:
0x1234 000–1,0010,0011,01–00 中心有11位、所以不是当即数.
0x34 0011,0100 是当即数
0xf000000f 1111,000000,1111 是
0xFFFFFFFF 1111,1111,1111,1111,1111,1111,1111,1111, 不是当即数可是是有用数.
0x1f08 0001,1111,0000,1000 是
——————————–
keven.