ARM(三) ISA介绍之Data Processing Instructions(数据运算指令)
2015-12-16 22:39
696 查看
前章知识复习 |
ARM具有3个指令集-ARM,Thumb,Jazelle
Register file 包含了37个寄存器,只有17,18个寄存器在同一时间是可访问的—这取决于ARM所在的模式
cpsr存放当前处理器的模式。其中包括3部分,interrupt masks,condition flags and state
Core扩展部分包含了:TCM, Cache,Memory management, Coprocessor
一种ARM处理器是一种ISA的具体实现
一、Data Processing Instructions |
Carry是移位出的最后一位
Negative是第31位上的值
Zero是当结果为0的时候
MOVE instructions |
< instruction>{< cond>}{S} Rd, N
MOV Rd = N MVN Rd = ~N
Barrel shifter |
例如:MOV r1,r2,LSL #2
指令如下:
LSL,LSR,ASR,ROR,RRX
Arithmetic Instruction |
ADD
RSB Rd=N-Rn
RSC
SBC
SUB Rd=Rn-N
* arithmetic instructions使用了内置(inline)的barrel shifter
Logical Instructions |
指令 | 解释 | 使用 |
---|---|---|
AND | bitwise | |
ORR | bitwise | |
EOR | exclusive(not including sth) OR | Rd = Rn^N |
BIC | bit clear(Not AND),在cpsr中非常有用,用于清除位置。例如:BIC r0,r1,r2 会将R2中为1的位在R0中全部清除为0 | Rd = Rn & ~N |
Comparison Instruction |
会遗弃结果
指令 | 解释 | 使用 |
---|---|---|
CMN | compare negated | Rn+N |
CMP | compare | Rn-N |
TEQ | exclusive OR | Rn^N |
TST | and | Rn&N |
Multiply Instructions |
指令 | 解释 | 使用 |
---|---|---|
MLA{< cond>}{S} Rd, Rm,Rs,Rn | ||
MUL{< cond>}{S} Rd, Rm,Rs | ||
MLA | Rd=(Rm*Rs)+Rn | |
MUL | Rd=(Rm*Rs) | |
instruction{< cond>}{S} RdLo, RdHi,Rm,Rs | ||
SMLAL | [High,Low]=[High,Low]+Rm*Rs | |
SMULL | [Hihg.Low]=Rm*Rs | |
UMLAL | 同SMLAL | |
UMULL | 同SMULL |
相关文章推荐
- iOS 9 新特性之实现 3D Touch 就是 So easy -- OC版
- 爬爬爬之路:UI(二十) iOS动画 通知
- java文件操作
- Jmeter使用
- 欢迎使用CSDN-markdown编辑器
- 强大的自适应jQuery焦点图特效
- Linux中find命令详解
- Arduino - 串口操作函数与示例代码大全
- UVa-10129 单词
- IO(输入流)
- windows 系统下CMD命令大全
- Dancing links
- 导致SharePoint发生Timeout的几处门槛设置
- Android开发快速入门(环境配置、Android Studio安装)
- 文本框空白按钮不可按
- 文章标题
- 关于pthread的cancel point
- Jmeter(二)-使用代理录制脚本
- python学习笔记-Day08--(socket和socketserver)
- 零碎知识总结——学渣修行路