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

                                          

  • 相关阅读:
    vue-quill-editor富文本编辑器使用
    vue中this.$router.push()路由传值和获取的两种常见方法
    在 Vue.js项目中如何定义全局变量&全局函数
    vue中利用provide和inject实现页面刷新(无白屏)重载组件
    linux 发送get post命令
    java 反射结合hibernate-validator 注解校验对象数据合法性
    开发过程工具集
    java 创建文件夹及文件写入数据到excel
    java文件不存在就创建_Java中创建并写文件的5种方式【转载】
    java 字符串左补齐
  • 原文地址:https://www.cnblogs.com/yygsj/p/4989771.html
Copyright © 2011-2022 走看看