zoukankan      html  css  js  c++  java
  • ARM汇编指令集1

    (汇编)指令是CPU机器指令的助记符,经过编译过会得到一串0011组成的机器码,可以由CPU读取执行。

    (汇编)伪指令本质不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码。

    两种不同风格的ARM指令

    --ARM官方的ARM汇编风格:指令一般用大写,Windows中的IDE开发环境(如ADS、MDK)常用。如:LDR  R0,[R1]

    --GNU风格的ARM汇编:指令一般用小写字母、Linux中常用。如:ldr  r0,[r1]

    ARM 汇编的特点1:LDR/STR架构

     --ARM采用RISC架构,CPU本身不能直接读取内存,而需要先将内存中内容载入CPU中通用寄存器中才能被CPU处理。

      --ldr(load register)指令将内存内容加载入通用寄存器。

      --str(store register) 指令将寄存器内容存入内存空间中。

      --ldr/str组合用来实现ARM CPU和内存数据交换。

     ARM汇编特点2: 8种寻址方式

      --寄存器寻址                  mov   r1,r2

      --立即寻址                     mov   r0,#0xFF00

      --寄存器移位寻址             mov   r0,r1,lsl#3

      --寄存器间接寻址             ldr     r1,[2]       ;r2里的数据为内存地址里的数据赋值给r1(有点像C语言的指针)

      --基址变址寻址                ldr     r1,[r2,#4] ;  r2里的数据为内存地址加4的地址里的数据赋值给r1(有点像C语言的指针)

      --多寄存器寻址                ldmia  r1!,{r2-r7,r12};r1里的数据作为起始内存地址依次往后将r2,r3,r4,r5,r6,r7,r12里的数据依次赋值到内存里(类似于数组)

      --堆栈寻址                     stmfd  sp!,{r2-r7,lr};sp里的数据作为起始内存地址依次往后将r2,r3,r4,r5,r6,r7,lr里的数据依次赋值到内存里(栈的操作)

      --相对寻址                     beq     flag;直接跳转到flag为标号的地方

    ARM汇编特点3:指令后缀

    --同一指令经常附带不同的后缀,变成不同的指令。

      经常使用的后缀有:

                                   B(byte)功能不变,操作长度变为8位

                                   H(half word)功能不变,长度变为16位

                                   S(signed )功能不变,操作数变为有符号     如:ldr ldrb  ldrh ldrb ldrh

                                          

  • 相关阅读:
    Windows系统 Mysql5.6下载安装以及配置
    【翻译】Javascript “组件模式” 深入研究
    【原创】使用GridView实现绑定List并排序
    【翻译】【项目架构必备】Asp.Net MVC3 定义自己的项目模板
    【原创】也谈我如何解决Silverlight跨域访问安全性问题
    【翻译】MVC 3 Razor语法技巧之——The @helper syntax
    【翻译】Knockout 2.1版本发布&新特性一览
    【原创】三把利器快速制作代码帮助文档
    现代软件工程_团队项目_阿尔法阶段_第二次会议记录_2017.11.13
    现代软件工程_团队项目_阿尔法阶段_需求分析文档_2017.11.13
  • 原文地址:https://www.cnblogs.com/yygsj/p/4989771.html
Copyright © 2011-2022 走看看