我是靠谱客的博主 霸气大树,最近开发中收集的这篇文章主要介绍程序计数器(PC),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.PC中存放下一次访存的地址。

2.PC自增的确是PC+取出指令的长度。

3.PC每次自增都是固定的字长。

————————————————————————————

1.程序计数器的工作原理

大概解释一下程序计数器吧,用一个最简单的例子。

首先第一点:PC中存放的是下一步要访问的内存地址。

如图,这是一个非常非常简单的CPU模型。


一个简单到的只有五条指令In(put)、Add 、Sto(re) 、Out(put) 、JMP的微控制器。

每一条指令都由一系列状态,或者说微指令组成。

对于每一条指令,都会在开始执行两条公共的微指令01,02,

01:PC的值打入存储器地址寄存器,PC自增。

02:存储器的数据输入到总线,再流入指令寄存器。

接下来就是每个指令各自的分支路线了,然后再重头循环。


可以很清楚的看出,对于In指令之外的所有指令,

[PC->AR,PC+1] 这条微指令在整个指令执行周期中都不止执行了一次


所以,不是说一条取指微指令执行完之后直接让PC+指令长度,有的指令屁股后面还挂着一两个操作数呢。在取操作数的时候,这条微指令也要执行,始终保证下一次访存时,PC指向正确的位置。在这个过程中PC自增可能执行了不止一次,访存几次就执行几次。


有时候讲组织结构,为了省事,就直接说+1了。

其实我觉得说+1是有歧义的,不如换成自增....

这个自增,究竟增长了几个字节,就要看机器的字长了。

比如这里的粒度是单字节,那PC每次自增,就是后跳一字节,也就是真正的“+1”。


2.PC寄存器是不是真的存在。

程序计数器是实际存在的,别的体系我不清楚,不过x86是有的。


原来和堆栈寄存器放一起的,看,就是变了个名字嘛。




最后

以上就是霸气大树为你收集整理的程序计数器(PC)的全部内容,希望文章能够帮你解决程序计数器(PC)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部