arm通用寄存器及其别名

合集下载

arm9处理器的内部寄存器结构

arm9处理器的内部寄存器结构

arm9处理器的内部寄存器结构
ARM9处理器是一种32位的嵌入式处理器,内部包含了多种寄存器,这些寄存器扮演着不同的角色,用于存储不同类型的数据和指令,从而实现处理器的各种功能。

ARM9处理器的内部寄存器结构主要包括:
1.通用寄存器:ARM9处理器有16个32位的通用寄存器,这些寄存器不仅可以用于存储数据,还可以用于存储指令中的操作数。

通用寄存器还可以用于存储函数的参数和返回值。

2.程序计数器(PC):程序计数器是一个32位的寄存器,用于存储当前正在执行的指令的地址。

当处理器执行完一条指令后,PC会自动递增,指向下一条指令的地址。

3.状态寄存器:状态寄存器用于存储处理器的当前状态。

例如,它可以用于存储处理器的运行模式,或者存储处理器的条件码。

4.堆栈指针(SP):堆栈指针用于指向当前的堆栈顶部。

当处理器需要执行函数调用或其他需要使用堆栈的指令时,它会将数据压入堆栈中,并将堆栈指针减小。

当函数返回时,处理器会将数据从堆栈中弹出,并将堆栈指针增加。

5.链接寄存器(LR):链接寄存器用于存储函数调用的返回地址。

当函数被调用时,处理器将当前指令的地址存储在LR中。

当函数执行完毕后,处理器会将LR中的地址作为返回地址,跳转回调用函数的地方。

6.中断寄存器:中断寄存器用于存储当前中断的状态。

当处理器
接收到一个中断时,它会将当前的状态保存在中断寄存器中,并跳转到中断处理程序的地址。

总之,ARM9处理器的内部寄存器结构是非常复杂的,不同类型的寄存器扮演着不同的角色。

通过合理地利用这些寄存器,程序员可以实现各种复杂的嵌入式应用。

arm常用的名词解释

arm常用的名词解释

arm常用的名词解释ARM(Advanced RISC Machine)是一种常用的计算机架构,被广泛应用于移动设备、嵌入式系统和单片机等领域。

本文将对ARM常用的一些名词进行解释,以帮助读者更好地了解ARM架构。

1. RISC(Reduced Instruction Set Computer):精简指令集计算机。

相对于复杂指令集计算机(CISC),RISC采用简化指令集,每条指令都非常简单,执行速度快,并且易于设计和优化硬件。

2. 架构:计算机系统的基本设计和组织原则。

ARM架构设计了一套标准的指令集和寄存器组织,以及与之兼容的处理器核心,为ARM生态系统提供了一致的编程接口。

3. 处理器核心(Processor Core):ARM的核心部分,负责执行指令和进行算术逻辑运算。

常见的ARM处理器核心包括Cortex-A系列(用于应用处理器)、Cortex-M系列(用于嵌入式系统和微控制器)和Cortex-R系列(用于实时应用和嵌入式处理器)。

4. 指令集架构(Instruction Set Architecture):定义了一套计算机指令的规范和编码方式。

ARM指令集架构包括ARMv8-A、ARMv7-A、ARMv6-M等不同的版本,不同版本支持不同的指令集和功能。

5. 寄存器:位于处理器核心内部的高速存储器,用于存储指令执行过程中需要操作的数据。

ARM体系结构中,常见的寄存器包括通用寄存器、程序计数器、状态寄存器等。

6. 多核处理器(Multi-core Processor):使用多个处理器核心的处理器。

ARM 架构支持多核处理器的设计,使得多个核心可以同时进行计算任务,提高处理能力和并行性能。

7. SoC(System on a Chip):一种集成了多个功能组件的芯片,包括处理器核心、内存控制器、I/O接口等。

ARM架构广泛应用于SoC的设计,提供了高度集成的解决方案,节省了系统板块的空间和功耗。

单片机笔记-寄存器、引脚及其英文名称缩写

单片机笔记-寄存器、引脚及其英文名称缩写

单片机笔记-寄存器、引脚及其英文名称缩写在单片机开发过程中,我们常常会涉及到寄存器和引脚的使用。

寄存器是用于存储和处理数据的重要组成部分,而引脚则是用于连接外部设备和单片机的接口。

了解寄存器、引脚及其英文名称缩写是学习和理解单片机编程的重要一步。

一、寄存器寄存器是单片机中的一种特殊功能寄存器,它们用来存储特定的信息,如状态、控制和数据等。

寄存器的使用是通过对其地址进行读/写操作来实现的。

在单片机中,存在着许多不同的寄存器,下面是一些常见的寄存器及其英文名称缩写:1. 状态寄存器(Status Register) - SR状态寄存器用于存储和显示一些跟运算或处理结果有关的标志位,如进位标志位、溢出标志位、零标志位等。

通过对状态寄存器的读写,可以获取或设置这些标志位的值。

2. 数据寄存器(Data Register) - DR数据寄存器用于存储临时数据,如中间计算结果或输入/输出数据等。

读写数据寄存器时,可以进行数据的读取或写入操作。

3. 控制寄存器(Control Register) - CR控制寄存器用于控制某些外设或特定功能的工作方式,如时钟控制寄存器、中断控制寄存器等。

写入或读取控制寄存器可以实现对相应功能的配置和控制。

4. 地址寄存器(Address Register) - AR地址寄存器用于存储指令和数据的地址信息。

在程序执行过程中,地址寄存器可以用于指示当前要执行的指令或要读取/写入数据的地址。

二、引脚引脚是单片机的外部接口,通过引脚可以与其他电子元件或设备进行连接和通信。

引脚的使用通常包括输入输出、中断触发、时钟输入等功能。

下面是一些常见的引脚及其英文名称缩写:1. 电源引脚(Power Pin) - VCC、GND电源引脚用于提供单片机的供电电源。

其中,VCC用于给单片机提供正电源,而GND则是单片机的接地端。

2. 输入引脚(Input Pin) - IN输入引脚用于接收外部信号。

arm寄存器的分类

arm寄存器的分类

arm寄存器的分类ARM寄存器是ARM体系结构中的一部分,用于存储和处理数据。

根据其功能和用途的不同,ARM寄存器可以分为通用寄存器、程序状态寄存器、系统控制寄存器和浮点寄存器等多个类别。

一、通用寄存器通用寄存器是最常用的寄存器类型,用于存储临时数据、变量和计算结果等。

ARM体系结构提供了16个32位的通用寄存器,分别用R0-R15表示。

其中,R0-R12可用于存储数据和计算结果,R13为堆栈指针SP,R14为链接寄存器LR,R15为程序计数器PC。

通用寄存器具有快速访问和高灵活性的特点,可以在程序执行过程中频繁读写。

在函数调用过程中,通用寄存器用于保存临时变量、函数参数和返回值,保证程序的正确执行。

二、程序状态寄存器程序状态寄存器(CPSR)是ARM体系结构中的一种特殊寄存器,用于存储和控制程序的执行状态。

CPSR寄存器是一个32位的寄存器,包含了当前程序的运行状态、中断控制状态和条件执行状态等信息。

CPSR寄存器的位域有多个,其中最重要的有条件执行位、中断控制位和程序状态位等。

条件执行位用于控制条件分支指令的执行,中断控制位用于控制中断的使能和禁止,程序状态位用于记录程序的运行状态,如运行模式、状态标志和当前指令的执行情况等。

三、系统控制寄存器系统控制寄存器(SCR)是ARM体系结构中的一种特殊寄存器,用于存储和控制系统的运行状态。

SCR寄存器是一个32位的寄存器,包含了系统的控制状态、访问权限和异常处理等信息。

SCR寄存器的位域有多个,其中最重要的有访问权限位、异常处理位和系统控制位等。

访问权限位用于控制对系统资源的访问权限,异常处理位用于控制异常处理器的行为,系统控制位用于控制系统的运行方式和功能。

四、浮点寄存器浮点寄存器是ARM体系结构中的一种特殊寄存器,用于存储和处理浮点数数据。

ARM体系结构提供了16个32位或64位的浮点寄存器,分别用S0-S31或D0-D31表示。

其中,S0-S15用于单精度浮点数操作,D0-D15用于双精度浮点数操作。

ARM中各个寄存器的用途

ARM中各个寄存器的用途

1.寄存器使用说明
ARM处理器中R0-R15共16个寄存器,它们的用途是一些约定的习惯!
并依据这些用途定义了别名。

如图:
寄存器的使用情况如下:
1)子程序间通过寄存器R0-R3来传递参数,这时可以使用它们的别名A0-A3,被调用的子程序返回前无须重复R0-R3的内容。

2)在子程序中,使用R4-R11来保存局部变量,这时可以使用它们的别名V1-V8,如果在子程序中使用了它们的某些寄存器,子程序进入时要保存这些寄存器的值,返回时再次恢复它们;
对于子程序中没有使用到的寄存器,则不必进行这些操作,在Thumb指令中,通常只能使用寄存器R4-R7来保存局部变量。

3)寄存器R12用作子程序间scratch寄存器,别名为IP。

4)寄存器R13用作数据栈指针,别名SP,在子程序中寄存器R13不能用作它用,它的值在进入、退出子程序时必须相等。

5)寄存器R14称为链接寄存器,别名LR,它用于保存子程序的返回地址。

如果在子程序中保存了返回地址,R14可用作它用。

6)寄存器R15是程序计数器,别名PC,没用别的用途。

ARM指令全称及功能

ARM指令全称及功能

指令格式:指令{条件}{S} {目的Reg‎i ster‎},{OP1},{OP2} "{ }"中的内容可‎选。

即,可以不带条‎件只有目的‎寄存器,或只有目的寄‎存器和操作‎数1,也可以同时‎包含所有选‎项。

“S”决定指令的‎操作是否影‎响C PSR‎中条件标志‎位的值,当没有S时‎指令不更新‎C P SR中‎条件标志位‎的值助记符英文全称示例、功能跳转指令BBranc‎h跳转指令B Label‎;程序无条件‎跳转到标号‎L a bel‎处执行BLBranc‎h with Link带返回的跳‎转指令BL Label‎;当程序无条‎件跳转到标‎号L abe‎l处执行时‎,同时将当前‎的P C值保‎存到R14‎中BLXBranc‎h with Link and excha‎n ge带返‎回和状态切‎换的跳转指‎令BLX Label‎;从ARM指‎令集跳转到‎指令中所指‎定的目标地‎址,并将处理器‎的工作状态‎有A RM状‎态切换到T‎h umb状‎态,该指令同时‎将PC的当‎前内容保存‎到寄存器R‎14中BXBranc‎h and excha‎n ge带状态切换‎的跳转指令‎BX Label‎;跳转到指令‎中所指定的‎目标地址,目标地址处‎的指令既可‎以是ARM‎指令,也可以是T‎h umb指‎令数据处理MOVMove数据传送MOV R1,R0,LSL#3;将寄存器R‎0的值左移‎3位后传送‎到R1MVNMove NOT数据非传送‎MVN R0,#0 ;将立即数0‎取反传送到‎寄存器R0‎中,完成后R0‎=-1CMPCompa‎re比较指令CMP R1,R0;将寄存器R‎1的值与寄‎存器R0的‎值相减,并根据结果‎设置CPS‎R的标志位‎CMNCompa‎re negat‎i ve负数比较指‎令CMN R1,R0 ;将寄存器R‎1的值与寄‎存器R0的‎值相加,并根据结果‎设置CPS‎R的标志位‎TSTTest位测试指令‎TST R1,#0xffe‎;将寄存器R‎1的值与立‎即数0xf‎f e按位与‎,并根据结果‎设置CPS‎R的标志位‎TEQTest equiv‎alenc‎e相等测试指‎令TEQ R1,R2;将寄存器R‎1的值与寄‎存器R2的‎值按位异或‎,并根据结果‎设置CPS‎R的标志位‎ADDAdd加法运算指‎令ADD R0,R2,R3,LSL#1; R0 = R2 + (R3 << 1)ADCAdd with carry‎带进位加法‎ADCS R2,R6,R10; R2 = R6+R10+!C,且更新CP‎S R的进位‎标志位SUBSubtr‎act减法运算指‎令SUB R0,R1,#256; R0 = R1 – 256SBCSubtr‎act with carry‎带进位减法‎指令SUBS R0,R1,R2 ; R0 = R1 - R2 - !C,并根据结果‎设置CPS‎R的进位标‎志位RSBRever‎se subtr‎a ct逆向减法指‎令RSB R0,R1,R2 ; R0 = R2 – R1RSCRever‎se subtr‎a ct with carry‎带进位逆向‎减法指令RSC R0,R1,R2; R0 = R2 – R1 - !CANDAnd逻辑与操作‎指令AND R0,R0,#3;该指令保持‎R0的0、1位,其余位清零‎。

ARM寄存器的总结

ARM寄存器的总结
ARM寄存器的总结
ARM处理器共有37个寄存器:
1) 31个通用寄存器,包括程序计数器(PC)。这些寄存器都是32位的;
2)6个状态寄存器。这些寄存器也是32位的,但是只使用了其中的12位。
ARM通用寄存器
通用寄存器(R0-R15)可分为三类:不分组寄存器R0~R7;分组寄存器R8~R14;程序计数器PC。
1)不分组寄存器R0~R7
不分组寄存器R0~R7在所有处理器模式下,它们每一个都访问一样的32位寄存器。它们是真正的通用寄存器,没有体系结构所隐含的特殊用途。
2)分组寄存器R8~R14
分组寄存器R8~R14对应的物理寄存器取决于当前的处理器模式。若要访问特定的物理寄存器而不依赖当前的处理器模式,则要使用规定的名字。
寄存器R8~R12各有两组物理寄存器:一组为FIQ模式,另一组为除了FIQ以外的所有模式。寄存器R8~R12没有任何指定的特殊用途,只是在作快速中断处理时使用。寄存器R13,R14各对应6个分组的物理寄存器,1个用于用户模式和系统模式,其它5个分别用于5种异常模式。寄存器R13通常用做堆栈指针,称为SP;寄存器R14用作子程序链接寄存器,也称为LR。
中断禁止位:I置1则禁止IRQ中断;F置1则禁止FIQ中断。
T位:T=0指示ARM执行;T=1指示Thumb执行。在这些体系结构系统中,可自由地使用能在ARM和Thumb状态之间切换的指令。
模式位:M0,M1,M2,M3和M4(M[4:0])是模式位,这些位决定处理器的工作模式,如表所示。
3)其他位
程序状态寄存器的其他位保留,用作以后的扩展。
ARM核工作在用户模式,R0~R15可用。
存储器格式
ARM体系结构将存储器看作是从零地址开始的字节的线性组合。字节零到字节三放置第一个字(WORD),字节四到字节七存储第二个字,以此类推。

ARM寄存器总结

ARM寄存器总结

ARM寄存器总结
ARM 有16 个32 位的寄存器(r0 到r15)。

r15 充当程序寄存器
PC,r14(link register)存储子程序的返回地址,r13 存储的是堆栈地址。

ARM 有一个当前程序状态寄存器:CPSR。

一些寄存器(r13,r14)在异常发生时会产生新的instances,比如IRQ 处理器模式,这时处理器使用r13_irq 和r14_irq
ARM 的子程序调用是很快的,因为子程序的返回地址不需要存放在堆栈中。

1、ARM 处理器共有37 个寄存器,其中包括:
i. 31 个通用寄存器,包括程序计数器(PC)在内。

都是32 位寄存器
ii. 6 个状态寄存器,都是32 位寄存器,但目前只使用了其中12 位
2、ARM 处理器有7 种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器组。

任意时刻(也就是任意的处理器模式下),可见的寄存器包括
15 个通用寄存器(R0~R14)、一个或两个状态寄存器及程序计数器(PC)。

在所有的寄存器中,有些是各模式共用的同一个物理寄存器,有些是各模式自己拥有的独立的物理寄存器。

3、通用寄存器可以分为3 类:未备份寄存器(R0~R7)、备份寄存器
(R8~R14)和程序计数器PC(R15)。

对于每一个未备份寄存器来说,在所有的处理器模式下指的都是同一个物理寄存器。

对应备份寄存器R8~R12 来说,每个寄存器对应两个不同的物理寄存器,这使得中断处理非常简单。

例如,仅仅使用R8~R14 寄存器时,FIQ 处理程序可以不必执行保存和恢复中断现场的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AMR寄存器的别名+ APCS
默认情况下,arm处理器中的通用寄存器被称为:r0、r1...r14等,在APCS中为arm通用寄存器定义了别名。

在某些情况下(比如多人协作编辑汇编代码,或需要修改其它人所写的汇编代码时),使用APCS所定义的别名有助于提高代码的可读性和兼容性。

arm通用寄存器及其别名对照表:
The following register names are predeclared:
r0-r15 and R0-R15
a1-a4 (argument, result, or scratch registers, synonyms for r0 to r3)
v1-v8 (variable registers, r4 to r11)
sb and SB (static base, r9)
ip and IP (intra-procedure-call scratch register, r12)
sp and SP (stack pointer, r13)
lr and LR (link register, r14)
pc and PC (program counter, r15).
arm中r12的用途
原文作者在维护1个以前的程序,该程序包括应用、库文件以及linux device driver。

该程序原来使用arm-linux-gcc 3.4.3编译,现在改用arm-linux-gcc 4.1.1进行编译时发现程序无法运行。

经原文作者测试,发现当使用shared library形式编译程序后无法运行,而使用static linking形式编译程序后可正常运行。

这是由于在arm-linux-gcc 4.1.1所使用的新的规范中,r12不仅作为通用寄存器,还被称为Intra-Procedure-call scratch register。

Register r12 (IP) may be used by a linker as a scratch register between a routine and any subroutine it calls (for details, see §5.3.1.1, Use of IP by the linker). It can also be used within a routine to hold intermediate values between subroutine calls
Both the ARM- and Thumb-state BL instructions are unable to address the full 32-bit address space, so it may be necessary for the linker to insert a veneer between the calling routine and the called subroutine. Veneers may also be needed to support ARM-Thumb inter-working or dynamic linking. Any veneer inserted must preserve the contents of all registers except IP (r12) and the condition code flags; a conforming program must assume that a veneer that alters IP may be inserted at any branch instruction that is exposed to a relocation that supports inter-working or long branches.
——引用自:"Procedure Call Standard for the ARM Architecture"
19th January, 2007, Richard Earnshaw.
由上述说明可知,若在汇编代码中使用了bl命令,而r12又被作为通用寄存器使用时,则r12的值可能会被链接器插入的veneer代码所修改,若是单纯的c源码则不会出现此问题。

arm中R0-R15寄存器的作用
r0-r3:被用来传递函数参数和函数返回值(可使用其别名A1~A3),在子程序调用之间,可使用r0~r3
作为任何用途。

若在被调用程序中需要使用r0~r3,则应在使用前保存这些寄存器的内容。

r4-r11:被用来存放函数局部变量(可使用其别名V1~V8)。

若在被调用程序中需要使用r4~r11,则应在使用前保存这些寄存器的内容。

r12:可作为内部调用过程寄存器ip,链接器可能会在过程链接胶合代码(比如,交互操作胶合代码)中使用ip寄存器。

在过程调用之间,可将r12用于任何用途,被调用函数在返回之前无需恢复r12。

r13:栈指针sp,通常不会将sp作为其它用途使用,在退出被调用函数时,需将sp恢复到进入时的状态。

r14:链接寄存器lr,用来保存函数返回地址,若在被调用程序中需要使用r14,则应在使用前保存r14寄存器的内容。

r15:程序计数器PC,不可将PC作为其它用途使用。

注意:在中断ISR中需要保护所有寄存器,编译器会自动保护R4~R11。

相关文档
最新文档