程序计数器
程序计数器Program counter是指具有计数功能的指令地址寄存器,表示程序运行时下一条要执行的指令的地址,也叫指令计数器。当执行一条已有指令时,作为指令地址寄存器的程序计数器必须已经改变到下一条指令的地址,这样程序才能继续运行。
概况定义
程序计数器是计算机处理器中的一个寄存器,它包含当前正在执行的指令的地址(位置)每取出一条指令,程序计数器的存储地址就加1。取出每条指令后,程序计数器指向序列中的下一条指令。当计算机重新启动或复位时,程序计数器通常归零。
冯·诺依曼的主要内容之一的计算机体系结构是“该程序预先存储并由计算机自动执行”由处理器执行的程序(指令序列)它们以二进制码序列的形式预存于计算机的内存中,处理器将这些码逐个取入处理器进行解码、执行,完成整个程序的执行。为了保证程序能够连续执行,CPU必须有某种手段来确定下一条指令的地址。程序计数器(PC)它扮演着这个角色,所以它经常被称为‘指令计数器’
在程序开始执行之前,将程序指令序列的起始地址,即程序的第一条指令所在的存储单元的地址发送给PC机,CPU根据PC机的指令从存储器中读取第一条指令(取指)当执行一条指令时,CPU自动修改PC的内容,即每执行一条指令,PC就增加一个等于指令中包含的字节数的量(指令字节数),以便PC总是指向要提取的下一个指令地址。因为大多数指令是按顺序执行的,所以修改PC的过程通常只是简单地添加到PC中“指令字节数”
程序转移时,转移指令执行的最终结果是改变PC的值,也就是目的地址。处理器总是指PC、译码、执行,从而实现程序转移。
R15在ARM处理器中作为PC使用,总是指向取指单元,ARM处理器中只有一个PC寄存器,所有模式共用。R15的宽度为32位(下面的标签是R15[(31:0),表示R15的‘第31位’到‘第0位',ARM处理器可以直接寻址4GB地址空间(2^32=4G)