基于Android的ARM汇编语言系列之四:ARM处理器的寻址方式

发布者:caoxians4589最新更新时间:2016-07-01 来源: eefocus关键字:Android  ARM  汇编语言  寻址方式 手机看文章 扫描二维码
随时随地手机看文章
章节列表

之一:ARM汇编语言开篇 
之二:C/C++程序生成ARM汇编程序的过程分析 
之三:ARM汇编语言程序结构 
之四:ARM处理器的寻址方式 
之五:ARM指令集与Thumb指令集 
之六:NEON指令集与VFP指令集

处理器的寻址方式是通过指令给出的地址码字段来寻找真实操作数地址的方式,ARM处理器支持9中寻址方式。

一 立即寻址

立即寻址指令后面的地址码部分为立即数(常量或常数),立即寻址多用于给寄存器赋值。

举例

MOV RO, #1234

指令执行后,R0=1234。

二 寄存器寻址

寄存器寻址中,操作数在寄存器中,指令执行时直接从寄存器中取值进行操作。

举例

MOV R0, R1

指令执行后,R0=R1。

三 寄存器移位寻址

寄存器移位寻址是ARM指令集特有的寻址方式,和寄存器寻址类似,只是操作前需要对寄存器操作数进行移位操作。

  • LSL:逻辑左移,移位后寄存器空出的低位补0。
  • LSR:逻辑右移,移位后寄存器空出的高位补0。
  • ASR:算术右移,移位过程中,符号位保持不变,如果源操作数是正数,则空出的高位补0,否则补1.
  • ROR:循环右移,移位后移除的低位填入空出的高位。
  • RRX:带扩展的循环右移,操作数右移一位,移位空出的高位用C标志的值填充。

举例

MOV R0, R1, LSL #2

R1寄存器左移两位赋值给R0,指令执行后,R0=R1*4。

四 寄存器间接寻址

寄存器间接寻址中地址码给出的寄存器是操作数的地址指针,所需的操作数保存在寄存器指定的存储单元中。

举例

LDR R0, [R1]

将R1寄存器的数值作为地址,取出此地址中的值赋给R0寄存器。

五 基址寻址

基址寻址是将地址码给出的基址寄存器和偏移量相加,形成操作数的有效地址,所需的操作数保存在有效地址所指向的存储单元中。基址寻址多用于查表和数组访问等操作。

举例

LDR R0, [R1, #-4]

将寄存器R1的数组减去4作为地址,取出此地址中的值赋值给R0。

六 多寄存器寻址

多寄存器寻址一条指令最多可以完成16个通用寄存器的传送。

举例

LDMIA R0, {R1, R2, R3, R4}

LDM是数据加载指令,指令的后缀IA表示每次执行完加载操作后R0寄存器的值自增1个字。指令执行后,R1=[R0],R2=[R0+#4],R3=[R0+#8],R4=[R0+#12]。

七 堆栈寻址

堆栈寻址是ARM处理器特有的一种寻址方式,堆栈寻址使用特定的指令来完成。

  • LDMFA/STMFA
  • LDMEA/STMEA
  • LDMFD/STMFD
  • LDMED/STMED

举例

STMFD SP1, {R1-R7, LR}

将R1-R7,LR入栈,多用于保存子程序现场。

LDMFD SP1, {R1-R7, LR}

将数据出栈,放入R0-R7,LR寄存器,多用于恢复程序现场。

八 块拷贝寻址

块拷贝寻址可实现连续地址数据从存储器的某一位置拷贝到另一位置。

  • LDMIA/STMIA
  • LDMDA/STMDA
  • LDMIB/STMIB
  • LDMDB/STMDB

举例

LDMIA R0!, {R1-R3}

从R0寄存器的存储单元中读取3个字到R1-R3寄存器中。

STMIA R0!, {R1-R3}

存储在R1-R3寄存器的内容到R0指向ed存储单元。

九 相对寻址

相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到的操作数作为有效地址。

举例

BL NEXT
   ...
NEXT:
   ...

BL NEXT是跳到NEXT标号处执行,这里的BL就是采用相对寻址,标号NEXT是偏移量。

关键字:Android  ARM  汇编语言  寻址方式 引用地址:基于Android的ARM汇编语言系列之四:ARM处理器的寻址方式

上一篇:ARM处理器结构
下一篇:基于Android的ARM汇编语言系列之一:ARM汇编语言开篇

推荐阅读最新更新时间:2024-03-16 14:59

ADS ARM 汇编和GNU ARM汇编
Linux/Unix内核源代码用的编译器是GCC,而GCC采用的是AT&T的汇编格式,这与ADS下使用的汇编格式是不同的。 两种汇编格式的部分对比如下: GNU ARM汇编 ADS ARM汇编 “@”或“/*…*/” “;” .include GET .equ EQU .global EXPORT .extern IMPORT .long DCD .end END entry: ENTRY .text AREA Init,CODE,READONLY .data AREA Block,DATA,READWRITE .macro MACRO .endm MEND
[单片机]
基于S3C6410的ARM11学习(一) 基础知识
手上有一块OK6410的板子,就想起来花点时间学习下经典的ARM系列ARM11。了解一下ARM11的开发流程,以及怎么跑系统。 ARM11和之前学习的STM32的开发是很不一样的。STM32,都是把代码烧到STM32芯片FLASH中,然后代码从FLASH中执行,而且程序执行是不需要外部挂ram的,因为芯片的内部就集成了一定大小的ram。 而ARM11是不一样的,内部没有FLASH和ram,所以就需要外挂flash设备和ram设备,然后ARM11通过存储控制器来操作这些设备。 从图中就可以直观的看出区别了。对于S3C6410,因为内部没有存储器,所以需要将代码烧录到外挂的FLASH设备,这里FLASH设备可以有多
[单片机]
基于S3C6410的<font color='red'>ARM</font>11学习(一) 基础知识
Lauterbach TRACE32 工具可简化 MIPS 和 ARM CPU 结合设计的调试工作
Imagination Technologies和领先的微处理器开发工具供应商 Lauterbach 2016年2月18日宣布,两家公司已开始合作使 Lauterbach 广受欢迎的 TRACE32 工具能够更轻松地为 MIPS 异构 CPU 系统或结合 MIPS CPU 与 ARM CPU 的系统进行调试。Lauterbach 将在即将举行的全球嵌入式大会(Embedded World Conference and Exhibition)上展示这套解决方案。 Lauterbach 的 TRACE32 是一套模块化微处理器开发工具,可为嵌入式设计提供整合调试环境。TRACE32 现可支持多款 MIPS Release 6 CPU
[嵌入式]
出售25%ARM股份 软银这是要做什么?
  北京时间3月8日消息,据外媒报道,知情人士称,在主要投资者想要将芯片厂商 ARM 控股纳入他们的投资组合后,软银 集团计划将 ARM 的25%股份出售给一家科技基金。该基金由软银 与沙特联合创建。下面就随安防电子小编一起来了解一下相关内容吧。   知情人士称, 软银 将以80亿美元出售这部分 ARM 股份。这笔交易并不属于软银此前承诺向愿景基金(Vision Fund)投资250亿美元的一部分。   软银创始人孙正义(Masayoshi Son)正与沙特、阿布扎比穆巴达拉发展公司以及其他投资者建立一只规模为1000亿美元的投资基金,该基金将会使得孙正义成为全球最大的科技投资者之一。软银在去年9月斥资320亿美元收购
[安防电子]
基于ARM S3C2410的PDA人机接口电路
   引言   PDA(个人数字助理)实际上是一种比笔记本电脑还要小得多的手持式电脑,这种手持设备兼有计算、网络、传真、电话等多种功能,使得个人信息管理变得尤为方便,网上冲浪、收发电子邮件都可以通过无线方式解决。 随着电子技术的迅猛发展,具有耗电少、亮度高、体积小等特点的LCD(液晶显示器)被广泛应用于PDA系统中。   S3C2410是三星公司设计的32位RISC(精简指令集计算机)嵌入式处理器。该芯片基于ARM920T、内核,集成了众多的常用资源,如LCD控制器、SDRAM控制器、1个触摸屏接口、2个SPI接口等,内核最高工作频率可达266 MHz。适用于信息家电、智能电话、平板(Tablet)电脑、PDA、移动终
[单片机]
基于<font color='red'>ARM</font> S3C2410的PDA人机接口电路
浅析ARM汇编语言子例程设计方法
引言 在嵌入式软件系统开发过程中,大量使用C语言进行应用程序开发以提高开发效率。同时,系统中经常包含一些决定整个系统性能的关键模块,此时为了获得最佳性能,经常使用汇编语言编写它们,或者某些特殊情况下,例如操作硬件等,也必须使用汇编语言。 函数是C语言中一个重要的概念,在汇编语言中经常使用子例程或过程(subroutine or procedure)表达同样的概念,本文使用术语子例程。本文首先介绍ARM汇编语言子例程设计的一般方法,并以此为基础提出一种新的基于堆栈帧的设计方法,同时介绍与C语言交互技术。 1 一般方法 在ARM汇编语言中一般使用BL(Branch and Link)指令调用某个子例程,BL指令首先将返回地址保存
[单片机]
浅析<font color='red'>ARM</font><font color='red'>汇编语言</font>子例程设计方法
四、ARM 异常处理
4.1 模式与异常 当正常程序流程被暂时停止发生异常,例如响应一个来自外设的中断。在处理异常前,必须保护当前的处理器状态,以便在完成处理程序后能恢复到原来的程序 。 异常的类型: Reset undefined instruction swi prefetch/bort data/abort Reserved IRQ FIQ 处理器的模式: 每一个异常对应一种模式, 但不是一一对应关系   如下,中断向量表 4.2 ARM 异常处理过程   下面的步骤都是硬件自动完成的,软件不需要完成。 解释:    4.3 异常进入/返回总结 注意: PC 在不同情况含义不一样,比如:PC(excute)=PC(fe
[单片机]
四、<font color='red'>ARM</font> 异常处理
LG基于Arm平台实现数字电视处理性能的巨大飞跃
数字电视 (DTV) 正在演变为具有更丰富用户体验的多功能设备。除了如今已经大行其道的高品质视频流媒体服务,数字电视还提供诸如视频通话、健康和健身应用、游戏等功能。同时,用户体验也在不断改善,响应速度更快,人工智能 (AI) 功能日益增多,而且随着屏幕尺寸持续扩大,高清晰度 4K 用户界面 (UI) 也已然问世。 所有这些趋势都对数字电视平台提出了越来越高的算力需求。因此,数字电视的系统级芯片 (SoC) 需要采用更高性能的 CPU 和 GPU。 LG 追求更高性能 LG 是一家积极追求更高性能数字电视 SoC 的公司。这家消费类电子和家用电子公司在本周的 CES 2024 上推出了全新 OLED 电视,基于四核 Arm
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved