一个解决很多问题的关键寄存器

一个解决了我很多疑问的关键

原来操作系统里面说的PSW(程序状态字)是一个寄存器,而这个寄存器,既没有说是在奔腾CPU专门实现那种,而是X86架构也一直都有的,他就是我之前学汇编一直忽略的状态寄存器(也称程序状态字,标志寄存器)。flag register,记录了CPU的很多东西,以前觉得最不重要的东西,原来是最重要的。

FR包括状态位、控制位和系统标志位,用于指示微处理器的状态并控制微处理器的操作。

关于汇编可以看看这里,汇编概述

①状态标志位:包括进位标志CF、奇偶标志PF、辅助进位标志AF、零标志ZF 、符号标志SF和溢出标志OF。
② 控制标志位:包括陷阱标志(单步操作标志)TF、中断标志IF和方向标志DF。
③ 系统标志位和IOPL字段:在EFR寄存器(X86之后的处理器)中的系统标志和IOPL字段,用于控制操作系统或执行某种操作。它们不能被应用程序修改。

主要是IOPL字段,这个就是实现操作系统里的用户态和内核态转换的关键。IOPL(I/O privilege level field):输入/输出特权级标志位。他包含两个位的编码,所以CPU有0123四个级别的运行态,一般的windows或linux/unix都只用0、1两位。用这个寄存器就可以实现内核代码或者系统中断之类和用户程序代码之间的转换了。

然后还有一些系统标志位就不说了。

对了,关于是怎么改变寄存器的值,主要是通过感应高低电平来实现。还要再整理一下数字逻辑以及计算机组成原理才更清楚。