【方辉专栏】Armv7 M 架构简介(五)--寄存器
发布时间:2022-10-28

摘要: 本文主要对Armv7-M架构中指令集对寄存器进行介绍。

关键字:Armv7-M架构、寄存器、伪代码、SP、LR、PC、APSR


在程序员模型下提供了以一些通用的和专用的寄存器。本文主要介绍的是寄存器,将内存中数据加载寄存器,或将寄存器数据存储到内存中这些情况。


Arm核心寄存器

Arm 核心寄存器有16个,其中R0-R12为通用寄存器,还有3个特殊功能寄存器。

SP: 堆栈指针,用于指向正在活动的堆栈。默认初始化位置在堆栈的顶部。SP有时也被称作R13.

LR: 链接寄存器,用于存储返回链接。存储的值为子程序返回地址。默认初始化值为:OxFFFFFF。LR有时也被称作R14。

注:如果在子程序返回时重置这个值会导致故障,不需要子程序返回时,可以用于别的用途。

PC:程序计数器。默认初始化时为复位处理程序的起始地址。PC有时也被称作R15。


应用程序状态寄存器(APSR)

应用程序状态寄存器APSR的位分配如下:



Reserved是保留位,用于系统功能或未来扩展。在编写程序时需要忽略从保留位读出的数值,在写入时要保留其值。

N,bit[31] 负号标志位。二进制补码的有符号数,如果是负数则设置为1; 如果是正数或零则设置为0。

Z,bit[30] 零标志位。如果结果是零,则设置为1,否则设置为0;结果为零通常表示比较的结果是相等。

C,bit[29] 进位标志位。如果指令导致进位,例如无符号数加法的溢出,则设置为1.

V,bit[28] 溢出标志位。如果指令导致溢出,例如有符号数加法的溢出,则设置为1.

Q,bit[27] 如果使用SSAT或USAT指令更改输入值为饱和则设置为1,在DSP扩展的处理器中,处理器将此位设置为1,来表示某些乘法上的溢出。将该位设置为1称为饱和。


注:SSAT 可将有符号值饱和到有符号范围内;USAT 可将无符号值饱和到无符号范围内。

GE[3:0],bits[19:16] 大于或等于标志仅用于DSP指令。使用SIMD指令可以更新这些标志,用于指示操作的单字或半字的结果。软件可以用这些标志来控制后续的SEL指令。在没有用DSP扩展的处理器中,这些位需要被当做保留位。


来源:《Armv7-M Architecture Reference Manual 》


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


关于亿道电子

亿道电子技术有限公司(英文名称:Emdoor Electronics Technology Co.,Ltd)是国内资深的研发工具软件提供商,公司成立于 2002 年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。

20 年来,先后与 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA 设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式 GUI 工具等等。亿道电子凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。

欢迎关注“亿道电子”公众号

了解更多研发工具软件知识