常用ARM指令1:数据处理指令

•数据传输指令  mov mvn
      mov   r1,  r0        @两个寄存器之间数据传递
      mov       r1,  #0xff   @将立即数赋值给寄存器
mov 和mvn用法一样,区别是mov是原封不动的传递,而mvn是按位取反后传递
 
•算术指令  add sub rsb adc sbc rsc 
     and    逻辑与
     orr     逻辑或
     eor     逻辑异或
 
•逻辑指令  and orr eor bic
    bic     位清零
    bic   r0,r1,#0x1f      @将r1的数的bit0 到bit4清零后赋值给r0
 
•比较指令  cmp cmn tst teq   (比较指令重在过程不在乎结果)
   cmp    r0, r1         @等价于sub   r2, r0,r1  (r2 = r0-r1)
   cmn    r0, r1         @等价于 add r0,r1
   tst      r0,#0x08   @测试bit_3是否为0
   bne    suspendup  @上一条指令指令是否成立 成立就跳转到 标签suspendup
   tst      r0,#0x0f    @测试r0的bit0-bit3是否都为0
 
•乘法指令  mvl mla umull umlal smull smlal
 
•前导零计数  clz
比较指令用来比较2个寄存器中的数
注意:比较指令不用后加s后缀就可以影响cpsr中的标志位。
常用ARM指令2:cpsr访问指令 :mrs & msr


•mrs用来读psr(包括cpsr、spsr),msr用来写psrpsr(包括cpsr、spsr)
      cpsr和spsr的区别和联系:cpsr程序状态寄存器,整个SOC中只有1个;而spsr有5个,分别在5种异常模式下,作用是当普通模式进入异常模式时,
      用来保存之前普通模式下的cpsr,已在返回普通模式时恢复原来的spsr。
•CPSR寄存器比较特殊,需要专门的指令访问,这就是mrs和msr。
 
常用ARM指令3:跳转(分支)指令:b & bl & bx
•b 直接跳转(就没打开算返回)
•bl branch and link,跳转前把返回地址放入lr中,以便返回,以便用于函数调用
•bx跳转同时切换到ARM模式,一般用于异常处理的跳转。
 
常用ARM指令4:访存指令:ldr/str &  ldm/stm & swp
•单个字/半字/字节访问 ldr/str
•多字批量访问  ldm/stm
•swp r1, r2, [r0]
•swp r1, r1, [r0](内存和寄存器交换数据)
 
ARM汇编中的立即数(合法立即数与非法立即数
•ARM指令都是32位,除了指令标记和操作标记外,本身只能附带很少位数的立即数。因此立即数有合法和非法之分。
•合法立即数:经过任意位数的移位后非零部分可以用8位表示的即为合法立即数
  如:合法立即数:0x000000ff、0x00ff0000
       非合法立即数:0x000001ff
 
常用ARM指令5:软中断指令  :swi(software interrupt)
•软中断指令用来实现操作系统中系统调用

ARM汇编指令集3的更多相关文章

  1. ARM汇编指令集_学习笔记(1)

    一.什么是ARM汇编? 运行在ARM处理器上的汇编语言就叫ARM汇编. C程序运行在X86平台,底层就是X86汇编:运行在ARM平台,底层就是ARM汇编.ARM汇编与X86汇编有显著区别. X86属于 ...

  2. ARM汇编指令集1

    (汇编)指令是CPU机器指令的助记符,经过编译过会得到一串0011组成的机器码,可以由CPU读取执行. (汇编)伪指令本质不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译 ...

  3. ARM汇编指令集

    一.跳转指令.跳转指令用于实现程序流程的跳转,在ARM程序中有以下两种方法可以实现程序流程的跳转. Ⅰ.使用专门的跳转指令.Ⅱ.直接向程序计数器PC写入跳转地址值. 通过向程序计数器PC写入跳转地址值 ...

  4. ARM 汇编指令集 特点5:ARM 多级指令流水线

    1.为增加处理器指令流 的速度,ARM使用多级流水线. 就是举个例子: mov r1,#0 ,这条指令 分几个人做,一个人从存储器取指令,解码指令中用到的寄存器,寄存器运算. 这样三步 :如果一个人做 ...

  5. ARM汇编指令集4

    协处理器cp15操作指令: mcr & mrc •mrc用于读取CP15中的寄存器 •mcr用于写入CP15中的寄存器   什么是协处理器? •SoC内部另一处理核心,协助主CPU实现某些功能 ...

  6. Arm汇编指令集2

    什么是协处理器: SoC内部另一处理核心,协助CPU实现某些功能,被主CPU调用执行一定任务. ARM设计上支持16个协处理器,但是一般SoC只实现其中的CP15(cp就是cooperation pr ...

  7. ARM 汇编指令集 特点之一:条件执行后缀

    mov r0,r1; moveq r0,r1;//这句代码是否执行 取决于 上几句代码 的运行结果(最后一次CPSR 寄存器 的 高四位   NZCV 的标志位) 条件后缀执行特点:1.条件后缀执行是 ...

  8. ARM 汇编指令集 特点之一:指令后缀

    1.同一 指令 添加不同的后缀 就会有不同的功能! 例子: B (Byte)  功能不变,操作长度变为8位 H (Half Word) 功能不变,操作长度变为16位 S(Signed) 功能不变,操作 ...

  9. ARM汇编指令集5

    为什么需要多寄存器访问指令? ldr/str每周期只能访问4字节内存,如果需要批量读取.写入内存时太慢,解决方案是stm/ld 举例(uboot start.S 537行)   stmia  sp, ...

随机推荐

  1. Hessian矩阵与多元函数极值

    Hessian矩阵与多元函数极值 海塞矩阵(Hessian Matrix),又译作海森矩阵,是一个多元函数的二阶偏导数构成的方阵.虽然它是一个具有悠久历史的数学成果.可是在机器学习和图像处理(比如SI ...

  2. 解读tensorflow之rnn 的示例 ptb_word_lm.py

    这两天想搞清楚用tensorflow来实现rnn/lstm如何做,但是google了半天,发现tf在rnn方面的实现代码或者教程都太少了,仅有的几个教程讲的又过于简单.没办法,只能亲自动手一步步研究官 ...

  3. ansible判定文件或者文件夹是否存在

    ansible 的常用模块中没有判定当文件存在或者不存在时,执行某个执行 使用下面方法能简单判定某个文件是否存在 --- - name: judge a file or dir is exits sh ...

  4. 前端基础之jQuery(Day55)

    阅读目录 一 jQuery是什么? 二 什么是jQuery对象? 三 寻找元素(选择器和筛选器) 四 操作元素(属性,css,文档处理) 扩展方法 (插件机制) 一. jQuery是什么? [1]   ...

  5. Linux基础——系统监控

    系统监视和进程控制工具——top(任务管理器) top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. 各行数据大致解释如下: 12: ...

  6. Xamrin开发安卓笔记(一)

    http://www.cnblogs.com/minCS/p/4108133.html Xamrin开发安卓笔记(一)   安装篇 环境虽然搭建的不稳定,不过还是可以开发的,又加了两个环境变量不知道有 ...

  7. LeetCode:二叉搜索树中第K小的数【230】

    LeetCode:二叉搜索树中第K小的数[230] 题目描述 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明:你可以假设 k 总是有效的,1 ≤ k ...

  8. PAT 天梯赛 L1-008. 求整数段和 【水】

    题目链接 https://www.patest.cn/contests/gplt/L1-008 AC代码 #include <iostream> #include <cstdio&g ...

  9. dojo 官方翻译 dojo/Deferred

    延迟,异步调用 官网地址:http://dojotoolkit.org/reference-guide/1.9/dojo/Deferred.html require(["dojo/Defer ...

  10. Linux 进程管理 kill、killall、pkill命令

    Linux常用信号(进程间通信) 系统中可以识别的信号较多,我们可以使用命令"kill -l"或"man 7 signal"来查询.命令如下: [root@lo ...