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. P1026 犁田机器人

    P1026 犁田机器人 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 USACO OCT 09 2ND 描述 Farmer John為了让自己从无穷无尽的犁 ...

  2. ZipArchive框架的文件压缩和解压

    导入第三方框架ZipArchive之后还要在系统库文件中导入一个如下文件(搜索libz出来的任何一个都可以)   导入的头文件是#import "Main.h" 文件压缩 -(vo ...

  3. 涨姿势:创业做一个App需要花多少钱(8个人,6个月,就要100万,附笔记心得)

    (原标题:涨姿势:创业做一个App要花多少钱?) 作为互联网从业者,被外行的朋友们问及最多的问题是,“做一个网站需要多少钱?”或者“做一个APP需要多少钱?”. 作为做过完整网站项目和APP的人,今天 ...

  4. [翻译] - <Entity Framework> - 直接执行数据库命令

    原文:[翻译] - <Entity Framework> - 直接执行数据库命令 纯属学习上的记录, 非专业翻译, 如有错误欢迎指正! 原文地址: http://msdn.microsof ...

  5. 如何在Android应用程序中使用传感器模拟器SensorSimulator

    原文地址; 如何在Android应用程序中使用传感器模拟器 - 移动平台应用软件开发技术 - 博客频道 - CSDN.NET http://blog.csdn.net/pku_android/arti ...

  6. opencv绘制灰度直方图

    代码之一: #include <cv.h> #include <highgui.h> #pragma comment( lib, "cv.lib" ) #p ...

  7. 排序 归并排序&逆序对

    void MergeArray(int cry[],int temp[],int begin,int middle,int end) { int i=begin; int j=middle+1; in ...

  8. BIND9配置文件详解模板[转载]

    在CU上看到了一篇关于BIND9配置文件详解的文章,感觉不错,现转载了分享一下. //named.conf 注释说明 by shellyxz@163.com// 此文件对bind9的默认配置文件的说明 ...

  9. trim合理和谐

    今天早上,到公司,噩耗传来.上周的上线的功能出现问题,后台mis中有数据不能保存了. 经过紧张的查找,还是我的问题.有一个查重操作,在查重前,会比对新旧值,新值顺手trim了.旧值直接保存了. 在比较 ...

  10. [HDOJ2473]Junk-Mail Filter(并查集,删除操作,马甲)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2473 给两个操作:M X Y:将X和Y看成一类. S X:将X单独划归成一类. 最后问的是有多少类. ...