zoukankan      html  css  js  c++  java
  • [ARM] ARM处理器寻址方式

    ARM处理器寻址方式

    寻址方式是处理器根据指令给出的地址码字段来寻找物理地址的方式。

     

    1、立即寻址

      立即寻址也称为立即数据寻址,在立即寻址中的操作码字段后面的地址码部分就是操作数据本身,在数据包含在指令当中,取出指令就取出了立即数。

    ADD     R0,R0,#1
    MOV    R0,#0X3FF
     
     

    2、寄存器寻址

      在寄存器寻址中,操作数的值在寄存器中,就是利用指令中的地址码字段指出的寄存器中的数值作为操作数,指令执行时直接取出寄存器值操作,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。

    ADD    R0,R1,R2
    MOV    R1,R2
     
     

    3、寄存器间接寻址

      寄存器间接寻址指令中的地址码给出的是一个通用寄存器编号,所需要的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数据地址指针。

    SWP    R1,R1,[R2]
    ADD    R0,R1,[R2]
    LDR     R0,[R1]
     
     

    4、寄存器偏移寻址

      寄存器偏移寻址是ARM指令集特有的寻址方式,当第二操作数是寄存器偏移方式时,第二个寄存器操作数在第一个操作数结合前选择移位操作。

    MOV     R0,R2,LSL #3
    ANDS    R1,R1,R2,LSL R3
     
     

    5、基址变址寻址

      基址变址寻址就是将寄存器内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变地址方式常用于访问某基址附近的地址单元。

    LDR    R0,[R1,#0X0F]
    LDR    R0,[R1],#4
    LDR    R0,[R1,R2]
     
     

    6、多寄存器寻址

      多寄存器寻址就是一次可以传送几个寄存器的值,这种寻址方式可以用一条指令完成传送最多16个通用寄存器的值。

    LDMIA    R0,{R1,R2,R3,R4}
    STMIA     R0,{R3-R5,R10}
     
     

    7、堆栈寻址

      1、堆栈是一种数据结构,按先进后出的方式工作,使用一个称为堆指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。
      2、当堆栈指针指向最后压入数据时,称为满堆栈,而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈,同时根据堆栈的生成方式,又可分为递增堆栈和递减堆栈。
      3、当堆栈由低地址向高地址生成时,称为递增堆栈,当堆栈由高地址向低地址时,称为为递减堆栈。
      4、ARM微处理器支持四种类型的堆栈工作方式:满增堆栈、满减堆栈,空增堆栈、空减堆栈。

    LDMFD    SP!,{R1-R7,LR}
    STMFD     SP!,{R1-R7,LR}
     
     
  • 相关阅读:
    【C语言程序设计】C语言回文数怎么求?
    今天又要加班了,谁叫我是程序员!
    【编程入门】C语言字符串的加密和解密算法!
    某程序员吐槽:媳妇要给孩子报少儿编程班,将来继续做程序员!自己拿命换钱,难道后代也要继续拿命换钱?
    Linux 误删文件恢复命令及方法!
    后端程序员的成长之路:从菜鸟到架构!
    C语言基础教程 之 如何定义变量!
    程序员如何知晓自己被绿?在网上,面对黑客男朋友的你将毫无秘密可言!
    【编程书库】入门+进阶C语言,这几本就够了!
    【C语言笔记】ASCII码可见字符与不可见字符!
  • 原文地址:https://www.cnblogs.com/usingnamespace-caoliu/p/9691586.html
Copyright © 2011-2022 走看看