
程式计数器
程式计数器是用于存放下一条指令所在单元的地址的地方。
当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由记忆体取到指令暂存器中,此过程称为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指令的地址。此后经过分析指令,执行指令。完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令。
基本介绍
- 中文名:程式计数器
- 外文名:Program Counter
- 外语简称:PC
简介
程式计数器是计算机处理器中的暂存器,它包含当前正在执行的指令的地址(位置)。当每个指令被获取,程式计数器的存储地址加一。在每个指令被获取之后,程式计数器指向顺序中的下一个指令。当计算机重启或复位时,程式计数器通常恢复到零。
冯 ·诺伊曼计算机体系结构的主要内容之一就是“程式预存储,计算机自动执行”!处理器要执行的程式(指令序列)都是以二进制代码序列方式预存储在计算机的存储器中,处理器将这些代码逐条地取到处理器中再解码、执行,以完成整个程式的执行。为了保证程式能够连续地执行下去,CPU必须具有某些手段来确定下一条取指指令的地址。程式计数器(PC )正是起到这种作用,所以通常又称之为‘指令计数器’。
在程式开始执行前,将程式指令序列的起始地址,即程式的第一条指令所在的记忆体单元地址送入PC,CPU按照 PC的指示从记忆体读取第一条指令(取指)。当执行指令时,CPU自动地修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的位元组数(指令位元组数),使 PC总是指向下一条将要取指的指令地址。由于大多数指令都是按顺序来执行的,所以修改PC 的过程通常只是简单的对PC 加“指令位元组数”。
当程式转移时,转移指令执行的最终结果就是要改变PC的值,此PC值就是转去的目 标地址。处理器总是按照PC 指向取指、解码、执行,以此实现了程式转移。
当程式转移时,转移指令执行的最终结果就是要改变PC的值,此PC值就是转去的目 标地址。处理器总是按照PC 指向取指、解码、执行,以此实现了程式转移。
ARM 处理器中使用R15 作为PC,它总是指向取指单元,并且ARM 处理器中只有一个PC 暂存器,被各模式共用。R15 有32 位宽度(下述标记为R15[31:0],表示R15 的‘第31位’到‘第0位'),ARM 处理器可以直接定址4GB的地址空间(2^32 = 4G )。
特点
为了保证程式(在作业系统中理解为进程)能够连续地执行下去,处理器必须具有某些手段来确定下一条指令的地址。而程式计数器正是起到这种作用,所以通常又称为指令计数器。在程式开始执行前,必须将它的起始地址,即程式的第一条指令所在的记忆体单元地址送入程式计数器,因此程式计数器的内容即是从记忆体提取的一条指令的地址。当执行指令时,处理器将自动修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的位元组数,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。
但是,当遇到转移指令如JMP(跳转、外语全称:JUMP)指令时,后继指令的地址(即PC的内容)必须从指令暂存器中的地址栏位取得。在这种情况下,下一条从记忆体取出的指令将由转移指令来规定,而不像通常一样按顺序来取得。因此程式计数器的结构应当是具有暂存信息和计数两种功能的结构。