1.arm有31个32位寄存器,其他的用于加速执行。
2. r0~r13是完全通用的, 而r14=LR, r15=PC.
1) LR在BL指令后,做为BL指令的下一条指令地址, 即函数返回地址(这和Powerpc是完全相同的),其他时候LR(R14)可作为通用寄存器使用。
2) PC(R15), 程序计数器,指向下一条指令地址, 由于arm指令都是4字节的,所以PC末尾两位总为0。(这和Powerpc不同, Powerpc是没有显式的PC的)。
3) 软件一般使用r13作为栈寄存器, 但这不是必须的。(和Powerpc一致,栈寄存器可以自选, 而x86就不同,栈寄存器永远是SP)
3. arm有五种异常,每种对应一个特权处理模式。
快速中断(fast interrupt), 普通中断(normal interrupt), 内存故障(memory aborts), 非法指令(attempted to execution of undefined instruction). 每种异常, r13,r14都有一个影像寄存器, 在快速中断时,r8~r12也都各有一个影子寄存器。 中断时, r14保存返回地址, 而r13一般用来保存私有的栈指针。
arm还有一个模式, 系统模式(system mode), 用来访问特权资源, 一般内核代码运行在此级别。
4. CPSR包含除通用寄存器外,所有的处理器状态。 每个异常模式还包含一个SPSR,包含异常发生前的CPSR值。
5. arm指令集分成六类:
1) 分支指令(Branch instructions)
2) 数据处理指令 (Data-processing instructions)
3) 状态寄存器传送指令 (Status register tansfer instructions)
4) 加载和存储指令 (Load and store instructions)
5)协处理器指令 (Coprocessor instructions)
Arm architecture 第一章
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
How to Write Go Code
zxdevops
2019-02-22 21:59:32
不得不为LINQ说几句话,驳“LINQ已死”论
lihuijun
2019-02-22 19:54:14
修改windows的语言
我的遊客
2019-02-22 19:40:56
Advice to a Beginning Graduate Student
xfjoy0223
2019-02-22 18:57:28
bad environment-failed to execute 'devices.exe -default'
virus
2019-02-22 18:55:19
to do list
a_jkou
2019-02-22 18:26:36
Unsupported major.minor version
jtr22
2019-02-22 16:26:12
Linux系统Qmail邮件服务器安装过程解析
cjh113
2019-02-22 16:13:45
Loadrunner报Failed to connect to server "127.0.0.1"
ShanaW
2019-02-22 15:46:05
线程池使用不当导致服务器内存耗尽
hellooworld
2019-02-22 15:12:38
关于jsp中使用jstl
張健的博克
2019-02-22 13:17:48
VMC to Hyper-V Import Tool 简体中文版.<VZPEDIA首发>
BabyXc
2018-09-12 07:10:31
mysql Tracing the Optimizer
sql1101
2018-11-30 12:53:17
the NTP socket is in use, exiting
ling118
2018-11-02 02:03:10
My job?My way?
PromeTech
2018-09-13 03:13:38