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

问题描述

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

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

但后来上网查了一下,发现PSW=PC+状态寄存器。这让我很困惑。

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

感谢任何解释。

解决方法

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

在这种情况下,您只需查看您正在阅读的任何书籍或文章给出的定义(或根据上下文推断),并意识到不同的作者可能会以不同的方式使用该词。

,

一般来说,中断是硬件级别的子程序调用。它们执行与子例程调用相同的操作(更改处理器正在执行的算法),但是它们执行时不会警告它们现在正在运行的“执行代码”。

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

PSW(通常称为标志寄存器)是一个非常重要的寄存器,一般必须先保存。它包含像零(最后一次计算结果为零)、进位(最后一次计算导致进位,即结果数大于寄存器可以容纳的值)和其他几个标志位。我建议您阅读 8 位微控制器的数据表,以了解这些标志可能是什么。只需说这些标志是执行条件跳转所必需的。虽然他们经常被忽视,但你不能抓住这个机会。

您的讲师使用术语 PSW 来表示所有寄存器,这可能是正确的。

中断的主题包含一般子程序调用常见的概念(例如,在进入子程序之前,不要将不想覆盖的数据留在寄存器中)。后来在操作系统中,多任务处理期间发生的上下文切换的概念。

彼得