ARM指令集可以分为跳转指令,数据处理指令,程序状态寄存器传输指令,LOAD/Store指令,协处理器指令和异常中断产生指令6类

ARM指令集的寻址方式

  数据处理指令的操作数的寻址方式

  字以及无符号字节的Load、Store指令的寻址方式

  杂类Laod、Store指令的寻址方式

  批量Load、Store指令的寻址方式

  协处理器Load、Store指令的寻址方式

数据处理指令的操作数的寻址方式

  立即数荀子,每个立即数有由一个8位的参数循环右移 偶数位得到,其中循环移位的位数由一个4位二进制的两倍表示

指令编码格式:

常见的:

  MOV R0,#0xFC0 令RO的数字为0xFC0

  MOV R3,R2;将R2的数字放到R3中

  ADD R0,R1,R2;将R0数值等于R15的数值加上R2的数值,R0 = R1+R2

  MOV R0,R0,LSL#n ; R0 = R0*(2**n)

此外,左移右移指令要看寄存器,如果是寄存器的话,一般左移的位数或者是右移的位数,看寄存器的低八位

字以及无符号字节的LOAD和STORE

load指令用于从内存中读取数据放入寄存器中,store指令用于将寄存器中的数据保存到内存,ARM有两大LOAD和STORE指令,以内用于32位字类型数据操作以及8位的无符号的直接类型数据

另一类是操作16位半字节的数据以及8位的有符号字节类型的数据,这里介绍的是第一种类型的Load和STore

下面关键还是看代码:

LDR R0,[R1,R2] ;将内存单元R1+R2中的字读取到R0中

LDR R0,[R1,-R2];将内存单元R1-R2中的数据读到R0中

LDR R0,[R1,R2,LSL #2]将地址单元R1+R2*4中的数据读取到RO中

LDR R0,[R1,#4]! 将内存单元R1+4中的数据读取到R0中,同时R1 = R1+4

指令中寻址方式的语法格式:其中有个 ! 的话,设置W位,更新基址寄存器的内容

LDR R0,[R1,R2]!;将内存单元R1+R2中的数据读取到R0中,同时R1=R1+R2

LDR R0,[R1,R2,LSL#2]!将内存单元R1+R2*4中的数据读取到R0中,同时R1 = R1+r2*4

对于有两个寄存器的,这个比较重要

LDR R0,[R1],#4,将地址R1的内存单元数据读取到R0中,同时R1 = R1+4

LDR R0,[R1],R2,将地址为R1,的内存单元数据读取到R0中,然后R1 = R1+R2

LDR R0,[R1].R2.LSL#2;将地址为R1+4的内存单元读取到R0中,然后R1 = R1+R2*4

注意移位的时候要进行注意,这里面涉及很深,以后再总结

转载请注明链接地址:http://www.cnblogs.com/fengdashen/p/3725138.html

ARM指令集----寻址方式的更多相关文章

  1. ARM指令集(上)

    ADuC702x可以用两套指令集:ARM指令集和Thumb指令集.本小节介绍ARM指令集.在介绍ARM指令集之前,先介绍指令的格式. A.2.1  指令格式         (1)基本格式       ...

  2. ARM指令集——条件执行、内存操作指令、跳转指令

    ARM 汇编指令条件执行 在ARM模式下,任何一条数据处理指令可以选择是否根据操作的结果来更新CPSR寄存器中的ALU状态标志位.在数据处理指令中使用S后缀来实现该功能. 不要在CMP,CMN,TST ...

  3. 常用 ARM 指令集及汇编

    ARM7TDMI(-S)指令集及汇编 ARM 处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制 较为简单,ARM7TDMI(-S)具有 32 位 ARM 指令集和 16 位 T ...

  4. 【基于Android的ARM汇编语言系列】之五:ARM指令集与Thumb指令集

    作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell [ ...

  5. ARM指令集相关知识

    1.ARMv8引入了执行状态机制,分为AArch32和AArch64 AArch32为T32(Thumb)和A32(ARM). AArch64为A64一种指令集 A64和A32的指令都是32位宽,可以 ...

  6. ARM指令集----杂项指令

    ARM指令集可以分为6类,即是跳转指令,数据处理指令,程序状态传输指令,Load.Store指令,协处理器指令和异常中断指令 跳转指令: 在ARM中有两种方式可以实现程序的跳转,一种是跳转指令,另一种 ...

  7. 对arm指令集的疑惑,静态库运行,编译报错等问题

    转载自http://www.jianshu.com/p/4a70aa03a4ea?utm_campaign=hugo&utm_medium=reader_share&utm_conte ...

  8. ARM指令集学习总结-转载

    ARM指令集比较简单,本文介绍ARM指令集中需要注意和不易理解的地方.       一.ARM指令集是32位的,程序的启动都是从ARM指令集开始,包括所有异常中断都是自动转化为ARM状态,并且所有的指 ...

  9. ARM_Instruction_Set_Encoding_hacking(ARM指令集编码格式解读)

    ARM指令集编码格式解读 说明: 1.本文参考的书籍<ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition>中的Cha ...

随机推荐

  1. Project Euler 81:Path sum: two ways 路径和:两个方向

    Path sum: two ways In the 5 by 5 matrix below, the minimal path sum from the top left to the bottom ...

  2. 欧拉工程第60题:Prime pair sets

    题目链接 五个数,任意两个数的任意链接后的数还是质数 满足这个条件的最小五个数的和是多少? 结果:26033 纯暴力破解: package projecteuler51to60; import jav ...

  3. 在C#中怎么调用Resources文件中的图片

    譬如资源中有名为myPic的图片,在代码中可以这么使用: this.BackgroundImage = Properties.Resources.myPic; 如有疑问,继续追问.

  4. JBoss - 调整JVM内存 -Xms512m -Xmx1024m

    $JBOSS-HOME/server/下有3个目录,all/default/minimal,它们是表示3种配置,全部的配置.默认配置.最小配置,我们在启动JBOSS服务时,可以指定 run –c al ...

  5. QTP鼠标点击和浏览器事件的动态切换

    今天在群里有人问到一个问题,我觉得应该会有很多人会碰到,今天根据自己的思路把这个解决方案整理出来,供自己和大家参考 需求描述: 当输入一个身份证号码的时候,这个号码所对应的数据会被加载到所属的省和市的 ...

  6. (六)CSS伪元素

    CSS伪元素用于向某些选择器设置特殊效果. 伪元素的用法和伪类相似: selector:pseudo-element {property:value;} CSS类也可以与伪元素配合使用: select ...

  7. AFNetworking使用

    1.访问网络获取Json //Get方法 NSString *str = @"http://api.xxx.cc/product/found.jhtml"; NSDictionar ...

  8. MemSQL Start[c]UP 2.0 - Round 1 B. 4-point polyline (线段的 枚举)

    昨天cf做的不好,居然挂零了,还是1点开始的呢.,,, a题少了一个条件,没判断长度. 写一下B题吧 题目链接 题意: 给出(n, m),可以得到一个矩形 让你依次连接矩形内的4个点使它们的长度和最长 ...

  9. jquery ajax请求 清除缓存

    使用jquery里load方法或者ajax调用页面的时候会存在cache的问题,清除cache的方法: 调用jQuery.ajaxSetup ({cache:false}) 方法即可.

  10. 石子合并(四边形不等式优化dp) POJ1160

    该来的总是要来的———————— 经典问题,石子合并. 对于 f[i][j]= min{f[i][k]+f[k+1][j]+w[i][j]} From 黑书 凸四边形不等式:w[a][c]+w[b][ ...