ARM 指令集 详解
来源:互联网 发布:java 编码规范 编辑:程序博客网 时间:2024/06/05 20:54
目录(?)[-]
- 指令与伪指令
- 指令与伪指令区别
- ARM汇编的特点
- ARM指令的两种不同编程风格
- 指令
- 数据处理指令
- CPSR访问指令
- 跳转分支指令
- 访存指令
- 软中断指令
- 立即数的表示
- 协处理器相关指令
- 多周期访问指令
- 伪指令
指令与伪指令
指令与伪指令区别
- (汇编)指令是CPU机器指令的助记符,经过编译后会得到一串10组成的机器码,可以由CPU读取执行。
- (汇编)伪指令本质上不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码。
ARM汇编的特点
LDR/STR架构
ARM采用RISC架构,CPU本身不能直接读取内存,而需要先将内存中内容加载入CPU中的通用寄存器中才能被CPU处理。
ldr(load register)指令将内存内容加载入通用寄存器。
str(store register)指令将寄存器内容存入内存空间中。
ldr/str组合用来实现 ARM CPU和内存数据交换。八种寻址方式
立即寻址 (操作数本身就是在指令中给出)
寄存器寻址 (寄存器中的数值作为操作数)
寄存器移位寻址 (对第二个源操作数进行移位操作后作为操作数)
寄存器间接寻址 (寄存器中的值作为操作数的地址,而操作数存放在该地址空间下)
基址变址寻址 (将寄存器中的内容与指令中偏移量相加作为操作数的地址,而操作数存放在该地址空间下)
多寄存器寻址
堆栈寻址
相对寻址相关搜索:ARM 汇编里的literal pools(文字池)
指令后缀
同一指令经常附带不同后缀,变成不同的指令。经常使用的后缀有:
B(byte)功能不变,操作长度变为8位
H(half word)功能不变,长度变为16位
S(signed)功能不变,操作数变为有符号
如 ldr ldrb ldrh ldrsb ldrsh
S(S标志)功能不变,影响CPSR标志位
如 mov和movs movs r0, #0条件执行后缀(Conditional execution)
a. Unordered means at least one NaN operand.
b. HS (unsigned higher or same) is a synonym for CS.
c. LO (unsigned lower) is a synonym for CC.
d. AL is an optional mnemonic extension for always, except in IT instructions.多级指令流水线
为增加处理器指令流的速度,ARM使用多级流水线。(S5PV210使用13级流水线,ARM11为8级)
下图为3级流水线工作原理示意图:
PC指向正被取指的指令,而非正在执行的指令.
ARM指令的两种不同编程风格
- ARM官方的ARM汇编风格:指令一般用大写、Windows中IDE开发环境(如ADS、MDK等)常用。如: LDR R0, [R1]
- GNU风格的ARM汇编:指令一般用小写字母、linux中常用。如:ldr r0, [r1]
指令
数据处理指令
CPSR访问指令
跳转(分支)指令
访存指令
软中断指令
立即数的表示
协处理器相关指令
多周期访问指令
伪指令
参考文档:DDI0406C_C_arm_architecture_reference_manual.
参考文献:王茹 浅析ARM指令的寻址方式 2012.
参考内容:朱有鹏老师课件
参考博客:http://blog.csdn.net/ASMARM/article/details/25792701
- ARM指令集详解
- ARM指令集详解
- arm指令集详解
- ARM指令集详解
- ARM指令集详解
- ARM指令集详解
- ARM指令集详解
- ARM指令集详解
- ARM指令集详解
- ARM 指令集 详解
- ARM指令集详解2
- ARM指令集-协处理器指令详解
- ARM指令集 和 条件执行 详解
- ARM指令集 和 条件执行 详解
- ARM指令集详解(带实例)
- 10.ARM汇编指令集详解
- ARM指令详解
- ARM指令详解2
- 常见对象-字符串的遍历
- 使用OpenCL+OpenCV实现图像旋转(一)
- oracle导入导出
- c++作业五
- 二七、str.split('').reverse().join();
- ARM 指令集 详解
- WLAN的基本定义和架构
- .NET和C#的关系
- spring事务处理详解
- 18---进程管理
- 模板类中定义list<T>::iterator iter在g++下不识别的解决办法
- dataTables错误:DataTables warning : Requested unknown parameter '1' from the data source for row 0
- Android-LIstview-列表控件的简单实现ArrayAdapter
- Hadoop基础教程-第1章 环境安装配置(1.6 SSH免密登录)