您的位置 首页 FPGA

ARM指令解析

今天我来总结一下arm指令的学习,今天我不会对所有的arm指令进行一一的解析,在这里希望大家去看arm汇编手册,这个手册的中文版我放在…

今日我来总结一下arm指令的学习,今日我不会对一切的arm指令进行逐个的解析,在这儿期望咱们去看arm汇编手册,这个手册的中文版我放在了http://download.csdn.net/detail/wrjvszq/8324589咱们先拿到这个文档,这个文档对arm指令的解析适当的全面,可是这儿要注意的是文档是arm对规范的汇编写出的文档,可是咱们要用的是gnu的汇编,这两个略微有点差异,关于差异咱们能够去看看这个博客http://www.cnblogs.com/hnrainll/archive/2011/05/17/2048315.html说完了这些,今日我的要点将会放在arm伪指令和arm协处理器拜访指令进行解析。
l伪指令
1、为什需求伪指令
要处理这个问题咱们先要了解一下机器码,相同咱们要用到在arm寄存器解析那一节用到的《ARM Architecture Reference Manual》这本材料在咱们学习arm的过程中十分重要。提到机器码咱们有必要要看看arm的机器编码格局

28~31bits(cond):是条件码,便是标明这条句子里是否有大于、等于、非零等的条件判别,这4bits共有16种状况,分别为:

二进制码 指令符号 意义 二进制码 指令符号 意义
0 EQ 持平 1 NE 不等
0010 CS/HS 进位/无符号数大于等于 0011 CC/LO 清进位/无符号数小于
0100 MI 减/负数 0101 PL 加/正数或0
0110 VS 溢出 0 VC 没溢出
1 HI 无符号数大于 1001 LS 无符号数小于等于
1010 GE 有符号数大于等于 1011 LT 有符号数小于
1100 GT 有符号数大于 1101 LE 有符号数小于等于
0 AL 任何条件 1 未界说

25bit(I)是用来差异shifer_operand域是选用当即数寻址方法仍是寄存器寻址方法,该bit为0标明寄存器寻址方法,为1标明当即数寻址方法。
21~24bits(opcode)是指令码,用来标明这条指令是什么指令。
12~15bits(Rd)是指令中的意图寄存器,寄存寄存器的4bits编号
0~11bits(shifter_operand)指令的操作数。
咱们能够看到指令的操作数最多只能为12位(其实中心还有4位用作其他用处,因而只要8位来标明当即数或许寄存器),难以处理剩余8位的数,因而引进伪指令来处理。
2、伪指令解析
伪指令首要在编译的时分起效果,它本身不发生机器码,而是在编译的时分起效果,告知编译器怎么编译,另一种效果便是转换为其他的实践的指令。
下面介绍几个常见的GNU风格的伪指令(一般会在前面加一个点’.’):
(1)global:把一个符号界说为大局的。
(2)data:用来界说数据段。
(3)ascii:字符串类型的数据。
(4)byte:字节型数据
(5)word:子数据
(6)equ:类似于C言语的宏界说
(7)align:操控对齐。加在需求被对齐(被调整)的标号(地址/指令)之前
l协处理器指令
1.什么是协处理器
用于履行特定的使命,减轻处理器核的担负。总共能够支撑16个协处理器,cp15是最重要的一个协处理器。
2.CP15的效果
体系操控协处理器,供给了许多额定的寄存器,经过这些寄存器咱们能够操控和装备cache,MMU,时钟体系等。拜访他首要是拜访他的寄存器,然后到达对体系的操控。
3.CP15的寄存器拜访
1.mcr:从通用寄存器到协处理器的寄存器
2.mrc:从协处理器的寄存器到通用寄存器
这儿仅仅提到他的简略用法,更多内容参阅《ARM Architecture Reference Manual》(一定要多读英文文档)。
以上是自己的arm指令的简略了解,期望各位提出宝贵意见。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/276446.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部