[ARM] ARM处理器寻址方式

ARM处理器寻址方式

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

1、立即寻址

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

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

2、寄存器寻址

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

ADD R0,R1,R2
MOV R1,R2

ADD    R0,R1,R2
MOV    R1,R2

3、寄存器间接寻址

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

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

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

4、寄存器偏移寻址

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

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

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

5、基址变址寻址

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

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

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}

LDMFD    SP!,{R1-R7,LR}
STMFD     SP!,{R1-R7,LR}

原文地址:https://www.cnblogs.com/usingnamespace-caoliu/p/9691586.html

时间: 2024-08-29 05:09:06

[ARM] ARM处理器寻址方式的相关文章

ARM多核处理器启动过程分析

说明: 该流程图按照代码执行时间顺序划分为4部分: 1.     Bootloader在图片上半部,最先启动: 2.     Kernel在图片下半部,由bootloader引导启动: 3.CPU0执行流程在图片左半部,bootloader代码会进行判断,先行启动CPU0: 4.  Secondary CPUs在图片右半部,由CPU唤醒 具体启动流程如下: 1.     在bootloader启动时,会判断执行代码的是否为CPU0,如果不是,则执行wfe等待CPU0发出sev指令唤醒.如果是CP

ARM各种处理器参数

来源 ARM公司处理器产品的主要系列 ARM推出的A系列处理器主要型号及规格 big.LITTLE架构:解决处理器耗电与性能之间的矛盾. 小核心主要有A7.A53.A35这三种,他们典型的特点是顺序执行架构.低流水线.低频率设计: 大核心则是A15.A17.A57.A72这几种,这种处理器都是乱序执行架构,3发射解码,高达15级流水线设计,运行频率在2GHz以上,主要面向高性能处理.

arm SecurCore 处理器【转】

转自:http://www.arm.com/zh/products/processors/securcore/index.php SecurCore 处理器 (View Larger SecurCore 处理器 Image) ARM SecurCore™ 处理器系列基于行业领先的 ARM 架构提供功能强大的 32 位安全解决方案.通过用各种安全功能来加强已十分成功的 ARM 处理器,SecurCore 推出了智能卡,从而安全类的 IC 开发人员可以方便地利用 ARM 32 位技术的优点(例如,晶

ARM中的寻址方式

ARM处理器支持9中不同的寻址方式. 1.移位寄存器寻址: 有5种移位方式: LSL:逻辑左移.最低位用0补充,且移出的最后一位存放在cpsr中的C位中. LSR:逻辑右移.最高位用0补充,且移出的最后一位存放在cpsr中的C位中. ASR:算术右移.最高位用符号位补充,且移出的最后一位存放在cpsr中的C位中. ROR:循环右移(不涉及到CPSR中的C位的循环右移).且移出的最后一位存放在cpsr中的C位. RRX:扩展循环右移(带有C位的右移).只循环右移一位,且最高位用cpsr中的C位补充

[ARM] ARM指令集

ARM指令集 一.ARM指令的格式和分类 经典ARM指令格式如下: <opcode> {<cond>} {S} <Rd>,<Rn>,<operand2> <opcode>   {<cond>}   {S}    <Rd>,<Rn>,<operand2> <> 为必选项,{}为可选项 为操作码,如ADD表示算术加操作指令 {} 决定指令执行条件域 {S} 决定指令执行是否影响C

基于ARM处理器的反汇编器软件简单设计及实现

写在前面 2012年写的,仅供参考 反汇编的目的 缺乏某些必要的说明资料的情况下, 想获得某些软件系统的源代码.设计思想及理念, 以便复制, 改造.移植和发展: 从源码上对软件的可靠性和安全性进行验证,对那些直接与CPU 相关的目标代码进行安全性分析: 涉及的主要内容 分析ARM处理器指令的特点,以及编译以后可执行的二进制文件代码的特征: 将二进制机器代码经过指令和数据分开模块的加工处理: 分解标识出指令代码和数据代码: 然后将指令代码反汇编并加工成易于阅读的汇编指令形式的文件: 下面给出个示例

DSP处理器和ARM处理器的区别以及各自应用在那些领域

由于工作经常接触到各种多核的处理器,如TI的达芬奇系列芯片拥有1个DSP核3个ARM核.那么DSP处理器和ARM处理器各自有什么区别,各自适合那些领域? DSP:digital signal processor数字信号处理器,也指digital signal process数字信号处理,有自己指令集.DSP处理器的特点如下: 有专门的的硬件乘法器,能进行大量的乘法操作,与通用的MCU处理器不同,通用的MCU在执行乘法操作时是通过软件编程的方式的来实现的,通常需要几十甚至上百个时钟周期,而DSP处

ARM指令分类及其寻址方式

ARM指令分类及其寻址方式 一:ARM指令的分类 ARM指令集可以分为以下6类: •跳转指令: •数据处理指令: •程序状态寄存器(PSR)传输指令: •load/store指令: •协处理器指令: •异常中断产生指令: 二.ARM指令的一般编码格式 ARM指令字长为固定的32位.一条典型的ARM指令语法格式及编码格式如下: 语法格式: <opcode>{<cond>}{s}   <Rd>,<Rn>,<shifter_operand> •<

ARM处理器的9种模式详解

ARM的处理器模式分几种要看是ARM的哪个系列,但是以现在的系列来说,有九种模式,这九种模式就是CPU在运算的时候,本来在读程序,突然系统发生异常,比如说蓝屏,这个时候操作系统肯定有相关的处理,同时我们也需要CPU一些信号,那么我们就可以通话CPU的切换来进行处理,这样实际上是在最低级别上考虑到的方式来完成了安全控制和效率控制,还有节能控制,所以这就是我们为什么要模式切换的原因,它模式与模式之间相对而言是比较独立的. Cortex-A九种处理器模式 1,user模式:用户模式,大部分程序运行时候