程序状态字(PSW)和程序计数器(PC)之间的区别是什么



在操作系统课程中,讲师在谈到中断处理时介绍了PSW和PC。

他的解释是PC保存要提取的下一条指令的地址PSW包含执行状态信息

但后来我在网上搜索,发现PSW=PC+状态寄存器。这让我很困惑。

一方面,我不确定;执行状态信息";另一方面,如果PSW具有PC的功能,为什么我们还需要它?

感谢您的解释。

这并不是真正标准化的术语。大多数体系结构都有一些寄存器,它扮演着状态字的角色,包含一些位来指示诸如加法指令是否导致进位之类的事情。但不同的体系结构给它起了不同的名字,具体包括什么可能会有很大的不同。我不知道有任何架构将程序计数器作为其状态词的一部分,但如果他们想这样做,那么谁来阻止他们呢?

在这种情况下,你只需要看看你正在阅读的任何书籍或文章给出的定义(或从上下文中推断(,并意识到不同的作者可能会使用不同的词。

通常,中断是硬件级别的子程序调用。它们做与子程序调用相同的事情(改变处理器正在执行的算法(,但是它们做这件事时没有警告";执行代码";他们现在正在运作。

为了不损坏";执行代码";必须存储它正在使用的所有信息。这包括程序计数器(通常由中断硬件以与子程序调用相同的方式保存到堆栈(和中断函数将更改的所有寄存器——这些寄存器必须通过将它们推到堆栈上来保存。寄存器等必须在从中断(RETI(指令返回之前恢复-PC由RETI本身恢复。

PSW(通常称为标志寄存器(是一个非常重要的寄存器,通常必须首先保存。它包含类似Zero(最后一次计算结果为零(Carry(最后一个计算结果为进位,即结果数大于寄存器可容纳的值(和其他几个标志。我建议你阅读8位微控制器的数据表,了解这些标志可能是什么。只要说这些标志是执行条件跳跃所必需的就足够了。虽然他们经常被忽视,但你不能冒险。

你在你的导师中使用术语PSW来表示所有寄存器可能是正确的。

中断主题包含通常子程序调用常见的概念(例如,在进入子程序之前,不要将不希望覆盖的数据留在寄存器中(。后来在操作系统中,上下文切换的概念出现在多任务处理过程中。

Peter

最新更新