在操作系统课程中,讲师在谈到中断处理时介绍了 PSW 和 PC。
他的解释是 PC 持有要获取的下一条指令的地址 PSW 包含执行状态信息
但后来我在网上搜索,发现PSW = PC + 状态寄存器。这让我很困惑。
一方面,我不确定“执行状态信息”指的是什么。另一方面,如果 PSW 具有 PC 的功能,我们为什么还需要它呢?
感谢任何解释。
在操作系统课程中,讲师在谈到中断处理时介绍了 PSW 和 PC。
他的解释是 PC 持有要获取的下一条指令的地址 PSW 包含执行状态信息
但后来我在网上搜索,发现PSW = PC + 状态寄存器。这让我很困惑。
一方面,我不确定“执行状态信息”指的是什么。另一方面,如果 PSW 具有 PC 的功能,我们为什么还需要它呢?
感谢任何解释。
这不是真正标准化的术语。大多数体系结构都有一些充当状态字的寄存器,其中包含一些位来指示诸如加法指令是否导致进位之类的事情。但是不同的架构给它起了不同的名字,具体包含的内容可能会有很大差异。我不知道有任何架构将程序计数器作为其状态字的一部分,但如果他们想这样做,那么,谁来阻止他们呢?
在这种情况下,您只需查看您正在阅读的任何书籍或文章给出的定义(或从上下文推断),并意识到不同的作者可能会以不同的方式使用这个词。
通常,中断是硬件级子程序调用。它们与子例程调用执行相同的操作(更改处理器正在执行的算法),但是它们在没有警告它们现在正在运行的“执行代码”的情况下执行此操作。
为了不损坏“执行代码”,必须存储它正在使用的所有信息。这包括程序计数器(通常由中断硬件以与子程序调用相同的方式保存到堆栈中)和中断函数将更改的所有寄存器 - 这些必须通过将它们压入堆栈来保存。寄存器等必须在从中断返回 (RETI) 指令之前恢复 - PC 由 RETI 本身恢复。
PSW(通常称为标志寄存器)是一个非常重要的寄存器,一般必须先保存。它包含像零(最后一次计算导致零结果)进位(最后一次计算导致进位,即结果数大于寄存器可以容纳的位)和其他几个标志位。我建议您阅读 8 位微控制器的数据表,以了解这些标志可能是什么。可以说需要这些标志来执行条件跳转就足够了。虽然他们经常会被忽略,但你不能抓住这个机会。
您可能是正确的,您的讲师使用术语 PSW 来表示所有寄存器。
中断的主题包含一般子程序调用常见的概念(例如,在进入子程序之前不要将您不想被覆盖的数据留在寄存器中)。后来在操作系统中,多任务期间发生的上下文切换的概念。
彼得