球速体育·(中国)官方网站。有趣实用的生活常识!

最新更新文章排行

球速体育·(中国)官方网站QIUSU SPORTS

当前位置: 球速体育·(中国)官方网站 > 最新更新

ARM Cortex M3指令集

时间:2024-08-28人气: 作者: 小编

  跳转指令用于实现程序流程的跳转,在ARM程序中有两种方法可以实现程序流程的跳转:

  通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC等类似指令,可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用。

  ARM指令集中的跳转指令可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以下4条指令:

  B指令是最简单的跳转指令。一旦遇到一个B指令,ARM处理器将立即跳转到给定的目标地址,从那里继续执行。注意存储在跳转指令中的实际值是相对当前PC值的一个偏移量,而不是一个绝对地址,它的值由汇编器来计算(参考寻址方式中的相对寻址)。它是24位有符号数,左移两位后有符号扩展为32位,表示的有效偏移为26位(前后32MB的地址空间)。以下指令:

  CMP R1,#0;当CPSR寄存器中的Z条件码置位时,程序跳转到标号Label处执行

  BL是另一个跳转指令,但跳转之前,会在寄存器R14中保存PC的当前内容,因此,可以通过将R14的内容重新加载到PC中,来返回到跳转指令之后的那个指令处执行。该指令是实现子程序调用的一个基本但常用的手段。以下指令:

  BL Label;当程序无条件跳转到标号Label处执行时,同时将当前的PC值保存到R14中

  BLX指令从ARM指令集跳转到指令中所指定的目标地址,并将处理器的工作状态有ARM状态切换到Thumb状态,该指令同时将PC的当前内容保存到寄存器R14中。因此,当子程序使用Thumb指令集,而调用者使用ARM指令集时,可以通过BLX指令实现子程序的调用和处理器工作状态的切换。同时,子程序的返回可以通过将寄存器R14值复制到PC中来完成。

  BX指令跳转到指令中所指定的目标地址,目标地址处的指令既可以是ARM指令,也可以是Thumb指令。

  Thumb指令集具有较高的代码密度,却仍然保持着ARM的大多数性能上的优势,它是ARM的子集。

  所有的ARM置零都是可以条件执行的,而Thumb置零仅有一条指令具备条件执行的功能。

  立即寻址指令中的操作码字段后面的部分就是操作数本省,也就是说,数据就包含再指令,取指令也就取出了可以立即使用的操作数。举例:

  ARM规定:这个立即数必须符合8位图格式,负责必须使用“文字池”方式,通过存储器访问指令加载,所谓的8位图格式就是指,这个数据能通过一个8bit的数循环右移偶数位得到。

  操作数的值在寄存器中,指令中的地址字段指出的是寄存器的编号,指令执行的时候直出寄存器值来操作。举例:

  寄存器移位寻址是ARM处理器特有的寻址方式。当第二个操作数是寄存器移位方式时,第二个操作数在与第一个操作数结合之前,选择进行移位操作。举例:

  LSL左移、LSR右移、ASR算术右移、ROR循环右移、RRX带扩展的循环右移

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

  SWPR1,R1,[R2];将寄存器R1的值和R2指向的单元中进行内容交换

  基址寻址就是将基址寄存器的内容与指令中给出的偏移量进行相加,形成操作数的有效地址。

  基址寻址用于访问基址附近的存储单元,常用于查表、数组操作以及功能不见寄存器访问等

  相对寻址是基址寻址的一种变通。由程序计数器PC提供基址地址,指令中的地址码字段为偏移量。两者相加后得到的地址即为操作数的有效地址。

  多寄存器寻址即一次可传送几个寄存器的值,允许一条指令传送16个寄存器的任何子集或

  堆栈是一种按特定顺序进行存取的存储区,操作顺序分为“先进后出”和“后进先出”,堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针)指向的存储区域(堆栈),指针所指向的存储单元即是堆栈的栈顶。

  还有从当前堆栈指针指向的内容是否有效可以分为:满递增、空递增、满递减、空递减

  Opcode是指令助记符,即操作码,说明指令需要执行的操作,在指令中是必需的。

  Cond项表明了指令的执行的条件,每一条ARM指令都可以在规定的条件下执行,每条ARM指令包含4位的条件码,位于指令的最高4位[31:28]。条件码共有16种,每种条件码用2个字符表示,这两个字符可以添加至指令助记符的后面,与指令同时使用。当指令的执行条件满足时,指令才被执行,否则指令被忽略。如果在指令后不写条件码,则使用默认条件AL(无条件执行)。

  CMP比较指令,用于把一个寄存器的内容和另一个寄存器的内容或一个立即数进行比较,同时更新CPSR中条件标志位的值。指令将第一操作数减去第二操作数,但不存储结果,只更改条件标志位。

  S项是条件码设置项,它决定本次指令执行的结果是否影响至CPSR寄存器的相应状态位的值。该项是可选的,使用时影响CPSR,否则不影响CPSR。

  Rd是指令中的目标寄存器,它是必需的。根据指令的不同,有些指令中要求Rd必须有R0~R7之间,有些要求Rd必须在R0~R14之间,有些则没有特殊要求。

  Rn是第一个操作数的寄存器,和Rd一样,不同的指令对其的使用有不同的要求。

  Opcode2项是第二个操作数,在ARM指令中,该操作数有三种形式:立即数形式、寄存器Rm形式和寄存器加移位形式(Rm, shift)。

  用于实现程序流程的跳转,在ARM程序中有两种方法可以实现程序流程的跳转:一是使用专门的跳转指令,二是直接向程序计数器PC写入跳转地址值。第二种方法可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用“MOV LR , PC”等类似指令,可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用。

  1)ARM指令集中的跳转指令可以实现从当前指令向前或向后的32MB的地址空间的跳转。

  注意,存储在跳转指令中的实际值是相对当前PC值的一个偏移量,而不是一个绝对地址,它的值由汇编器来计算(相对寻址)。这个偏移量是一个24位的有符号数,左移两位后表示的有效偏移为26位(前后32MB的地址空间)。{}表示可以省略。

  这条指令在跳转之前,会在寄存器R14中保存当前的下一条指令的地址,因此,可以通过将R14重新加载到PC中,来返回到跳转指令之后的那条指令处执行。该指令是实现子程序调用的一种常用手段。

  BX指令中所指定的目标地址,只能使用寄存器的寻址方式,即跳转的目标地址应先保存在一个寄存器中。指令在实现跳转的同时,完成处理器的工作状态的切换(ARM状态与Thumb状态间的切换)。

  BX指令中,用寄存器的最低位来指示切换到哪一个工作状态。如寄存器最低位为1,则把目标地址处的代码解释为Thumb代码,进入Thumb工作状态,并自动将CPSR中的控制位T置1。若寄存器最低位为0,则把目标地址处的代码解释为ARM代码,进入ARM工作状态,并自动将CPSR中的控制位T置0。

  数据处理指令可分数据传送指令、算术逻辑运算指令和比较指令等。数据传送指令用于在寄存器和存储器之间进行数据的双向的传输。所有ARM数据处理指令均可选择使用S后缀,以影响状态标志CPSR。比较指令(CMP、CMN、TST、TEQ)不保存运算结果,这些指令也不使用S后缀,但会直接影响CPSR中的相应的状态标志位。

  MOV指令可以完成从另一个寄存器、被移位的寄存器、或将一个立即数加载到目的寄存器。与MVN指令不同的是在传送之前,将被传送的对象先按位取反,再传送到目的寄存器。

  CMPR1 , #10 ;做R1 - 10的操作,结果不保存,但影响标志位。

  CMN 指令用于把一个寄存器的内容和另一个寄存器的内容或立即数取反后进行比较操作,根据运算结果影响CPSR中的标志位。该指令实际完成操作数1和操作数2相加,并根据结果更改条件标志位。

  TST位测试指令,用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的与运算,并根据运算结果更新CPSR中条件标志位的值。操作数1是要测试的数,而操作数2 是一个位掩码,该指令一般用来检测是否设置了特定的位。

  目前我国电话网交换机传送主叫识别信息CID(Calling Iden TI ty Delivery) 有两种方式,较常用的是FSK(频移键控) 方式,另一种是DTMF(双音多频) 方式。通过掌握相应的协议标准和数据格式,可通过ARM 控制芯片HT9032C 实现解调FSK 格式的来电信息,通过E2PROM 存储器存储来电信息,并利用液晶显示,同时控制ISD1402 语音芯片播放来电号码。以SPI 串行接口智能显示键盘控制芯片ZLG7289A 为核心设计的键盘电路实现查阅、删除来电信息。 1 系统硬件设计 1.1 系统总体设计 整个系统由5 部分组成,分别是: (1) FSK 信号解调; (2) 来电号码语音播报; (3) 显示

  控制芯片HT9032C 的来电号码显示器的实现方法 /

  VIC是中断源和CPU内核之间的一座桥梁.VIC可以支持32个中断输入,我们可以使用编程将32个中断请求设置为快速中断请求(FIQ)和向量中断请求(IRQ): 我们先来讲一下FIQ,FIQ具有最高的优先级,当FIQ和IRQ同时触发的时候,只能响应FIQ. 我们使用VICIntSelect寄存器来选择哪一个中断为FIQ,哪一个中断为IRQ,这是一个32bit的寄存器,每一位对应着下面的中断源表,这个表要经常用到,大家要记住: 这个表中任何一个中断源请求都可以被分配为FIQ,当然也可以被分配为IRQ.当只有一个中断源被分配为FIQ的时候,中断响应将是最实时的.如果有两个中断源被分配了FIQ,那么则必须在中断服

  (26)--向量中断控制器VIC(4) /

  摘要:介绍如何利用GNU的工具开发基于ARM的嵌入式系统,以及使用编译器、连接器和调试工具的具体方法,为广大嵌入式系统开发人员提供一种低成本的开发手段。 关键词:ARM GNU MC928MX1 gcc gdb gdbserver 当前,ARM公司的32位RISC处理器,以其内核耗电少、成本低、功能强、特有16/32位双指令集,已成为移动通信、手持计算、多媒体数字消费等嵌入式解决方案的RISC标准,市场占有率超过了75 %。多家公司都推出了自己的基于ARM内核的处理器产品,越来越多的开发人员开始了针对ARM平台的开发。通常开发人员需要购买芯片厂商或第三方提供的开发板,还需要购买开发软件,如C编译器或者集成了实时操作系统的开

  ST 为学生培训用嵌入式系统开发实验室提供微控制器、开发工具和产品支持 北京, 2006 年 9 月 12 日 —— 微控制器设计开发的领导厂商意法半导体(纽约证券交易所: STM) ,今天宣布与北京邮电大学 (BUPT) 和北京交通大学 (BJTU) 签订了合作协议,分别在两所大学校园内建立一个微控制器( MCU )实验室,这是 ST 与中国大学携手开发嵌入式应用技术和培训 电子 工程专业学生的大规模合作计划的重要组成部分。 作为 32 位微控制器的主导厂商之一, ST 将向这两所大学提供先进的 32 位 STR7 ARM 微控制器以及开发工具,使学生有机会

  1 引言 嵌入式数字示波器是近年发展起来的一种实现数据及波形实时显示的智能终端设备。目前通用的数字示波器多采用DSP、内嵌微处理器型FPGA或DSP+FPGA结构。嵌入式数字示波器可看成是一种低成本、功能相对较少、可作为一个模块使用的嵌入式智能终端。虽然DSP数据处理能力强大,运行速度较高,FPGA灵活性强,可以充分地进行设计开发和验证,便于系统升级。但是,DSP和内嵌微处理器型FPGA一般价格较高。不适合在低成本的嵌入式数字示波器开发中使用。 ARM是面向低价位市场设计的一种RISC微处理器,其优势是性价比高,适合嵌入式数字示波器的需求。当前采用ARM芯片设计的嵌入式数字示波器主要基于ARM7内核的微控制器S3C44BOX。采

  9和uC/OS-Ⅱ的嵌入式数字示波器 /

  MCR指令将ARM处理器的寄存器中的数据传送到协处理器的寄存器中。如果协处理器不能成功地执行该操作,将产生未定义的指令异常中断。 指令的语法格式: MCR{} p15, 0, , , {,} MCR2 p15, 0, , , {,} 其中,为指令执行的条件码。当忽略时指令为无条件执行。MCR2中,为Ob1111,指令为无条件执行指令。 为协处理器将执行的操作的操作码。对于CP15协处理器来说,永远为0b000,当不为0b000时,该指令操作结果不可预知。 作为元寄存器的ARM寄存器,其值被传送到得协处理器寄存器中。 不能为PC,当其为PC时,指令操作结果不可预知。 作为目标寄存器的协处理器寄存器,其编号可能为C0,C1

  集微网消息,Arm 全球执行副总裁兼大中华区总裁吴雄昂先生荣获2017年上海市白玉兰纪念奖。该奖项旨在表彰吴雄昂先生与Arm公司对于上海市经济建设、社会发展和对外交流等方面做出的突出贡献。   吴雄昂先生表示:“荣获‘上海市白玉兰纪念奖’不仅是项个人荣誉,更是对于Arm中国为上海和中国集成电路行业所作贡献的高度认可。今后,Arm将一如既往地助力中国电子信息技术产业的发展,与中国合作伙伴一起在国内建设合作开放创新的生态系统,帮助国家推进核心技术和知识产权’安全、自主、可控’战略目标的实现。” Arm是全球知名集成电路核心知识产权提供商,其先进的高能效处理器设计已广泛应用于移动计算、物联网、人工智能、数据中心等各个方面。2002年

  基于Proteus的Arm处理器的SPI接口实现 引言 现在,人们生活中的每个角落都有嵌入式设备的存在,比如DVD、移动电线及掌上电脑等等。这些嵌入式设备多采用32位RISC嵌入式处理器作为核心部件。其中基于Arm核的嵌入式处理器独占鳌头,在32位RISC处理器中占据超过75%的市场份额。因而越来越多的电子爱好者都加入了学习ARM的队伍中。通过和一般单片机系统开发过程的比较不难发现,嵌入式系统的设计包括硬件设计和软件设计两个方面,其调试过程包括软件调试、硬件测试、系统调试3个过程。软件调试一般比较容易进行,但是硬件测试和系统调试则比较麻烦,因为要进行这两个过程必须在 PCB制作、元器件焊接完毕之后才能进行;而PC

  处理器的SPI接口实现 /

  【电路】采用ARM Cortex-M3的12位、4-20mA环路供电型热电偶测量系统

  【电路】采用ARM Cortex-M3的12位、4-20mA环路供电型热电偶测量系统_温度传感器电路

  【电路】M3800/DT3800/M3900型3 1/2位数字万用表电路

  PAS CO2 传感器 套件测评

  9月24日 直播Microchip mSiC产品及其在电动出行中的典型应用方案

  有奖活动 来 Pl BridgeSwitch 技术中心探秘半桥电机驱动器新技术

  ADI & WT ·世健 MCU 痛点问题探索季 ——第二站:直播 MCU应用难题全力击破!

  立即报名 2024年STM32巡回研讨会即将开启!(9月3日-9月13日)

  【下载】LAT1415 如何通过STM32CubeMX添加使用DSP库

  【下载】LAT1437 选择USBX模块生成USB CDC ACM无PD的项目

  【下载】LAT1421 如何在STM32U5 TF-M工程中添加自定义服务

  【新品】STM32U0新一代超低功耗入门级MCU,助力终端产品省电,安全,BOM成本低

  【新品】 STM32H7R/S基于Cortex-M7,运行频率高达600 MHz,板载闪存型MCU 拥有高速的外部存储

  【新品】STM32WBA54/55 支持BLE5.4、IEEE 802.15.4通信协议、Zigbee®、Thread和Matter协议

  【新品】STM32MP2 最高配备双核Arm® Cortex®-A35和Cortex®-M33的STM32MP2系列微处理器

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  【方案】物链一体,构筑可信数字底座|摩联科技基于STM32H5/U5的区块链解决方案

  【应用】实现“单芯片”模式:TouchGFX 4.24 的创新特性解析

  随着便携式设备、电池供电、能量采集等场景需求量的提升,最近一段时间,低功耗MCU市场又开始卷起来,厂商接连推出相关产品。...

  有一些电子设备需要频率高度稳定的交流信号,而LC振荡器稳定性较差,频率容易漂移,即产生的交流信号频率容易变化。在振荡器中采用一个特殊 ...

  问题:该问题由某客户提出,发生在STM32F103VDT6器件上。据其工程师讲述:在其产品的设计中,STM32的HSE外接8MHz的晶体产生振荡,然后通过S ...

  问题描述客户反馈STM32F030作为他们产品的控制芯片,在常温下工作是正常的,但是稍微冷冻下就会启动失败,重现率100%,再次加热或者恢复到 ...

  什么是串口通讯?串行通讯是指仅用一根接收线和一根发送线就能将数据以位进行传输的一种通讯方式。尽管串行通讯的比按字节传输的并行通信慢 ...

  基于STM32F4和RT-Thread通用BootLoader使用经验

  站点相关:综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程球速体育官方网站

标签: 跳转地址  

本类推荐