我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:双彩网 > 指令计数器 >

ARM 关键几个寄存器

归档日期:06-30       文本归类:指令计数器      文章编辑:爱尚语录

  共有37个寄存器,可以工作在7种不同的模式。以下根据上图进行分类的说明:

  未分组寄存器r0-r7为所有模式共用,共8个。分组寄存器中r8-r12,快速中断模式有自己的一组寄存器,其他模式共用,所以有10个。分组寄存器中r13,r14,除了用户模式和系统模式共用外,其他模式各一组,所以共有2*7 - 2 = 12个。r15和CPSR共用,共2个;SPSR除了用户模式和系统模式没有外,其他模式各一个,共5个。

  所以总数为8+10+12+2+5 = 37个。与此对应的汇编名称表明了它们通常的约定用法。

  处理器要执行的程序(指令序列)都是以二进制代码序列方式预存储在计算机的存储器中,处理器将这些代码逐条

  地取到处理器中再译码、执行,以完成整个程序的执行。为了保证程序能够连续地执行下去,CPU必须具

  有某些手段来确定下一条取指指令的地址.程序计数器(PC)正是起到这种作用,所以通常又称之为指令计数器

  。CPU总是按照PC的指向对指令序列进行取指、译码和执行,也就是说,最终是PC 决定了程序运行流向。故而,程

  序计数器(PC )属于特别功能寄存器范畴,不能自由地用于存储其他运算数据.

  在程序开始执行前,将程序指令序列的起始地址,即程序的第一条指令所在的内存单元地址送入PC,CPU 按照 PC

  的指示从内存读取第一条指令(取指)。当执行指令时,CPU自动地修改PC 的内容,即每执行一条指令PC增加一个

  量,这个量等于指令所含的字节数(指令字节数),使 PC总是指向下一条将要取指的指令地址。由于大多数指令都

  是按顺序来执行的,所以修改PC 的过程通常只是简单的对PC 加“指令字节数”。

  当程序转移时,转移指令执行的最终结果就是要改变PC的值,此PC值就是转去的目标地址。处理器总是按照PC

  ARM处理器中通常将寄存器R13作为堆栈指针(SP)。ARM处理器针对不同的模式,共有 6 个堆栈指针(SP),其中

  用户模式和系统模式共用一个SP,每种异常模式都有各自专用的R13寄存器(SP)。它们通常指向各模式所对应的专

  用堆栈,也就是ARM处理器允许用户程序有六个不同的堆栈空间,ARM处理器中的R13被用作SP。当不使用堆栈时,

  由于处理器的每种运行模式均有自己独立的物理寄存器R13,在用户应用程序的初始化部分,一般都要初始化每种模

  式下的R13,使其指向该运行模式的栈空间。这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R

  13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复,采用这种方式可以保证异常发生后程序的

  当执行子程序调用指令(BL)时,R14可得到R15(程序计数器PC)的备

  份.在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将PC的当前值给

  R14,执行完子程序后,又将R14的值回PC,即可完成子程序的调用返回。以上的描述可用指令完成。

  N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否

  N Negative 如果结果是负数则置位 当用补码表示的带符号数进行运算时,N=1表示运算的结果为负数;N=0表示运算的结果是正数或零。

  Z Zero 如果结果是零则置位 Z=1表示运算的结果为零;Z=0表示运算的结果不为零。

  l 加法运算:当运算结果产生了进位时(无符号数溢出),C=1,否则C=0。

  2 减法运算(包括比较指令CMP):当运算时产生了借位(无符号数溢出)时,C=0,否则C=1。

  l 对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。

本文链接:http://f-taiken.net/zhilingjishuqi/183.html