更改任何寄存器(DR、IR 等)的值是否需要从用户模式切换到内核模式?

Is changing the value of any register(DR, IR etc) requires switching from user mode to kernel mode?

1) 所以在我正在阅读的书中说,例如更改 IR 寄存器不需要从用户模式切换到内核模式,但我不明白,我怎么知道它是否需要切换还是不?

2)还有其他寄存器呢,比如DR, PSW, PC等,我怎么知道它是否需要切换?

3) 最后一个问题是,在某些时候,这本书说了类似的话:更改 "memory management registers" 的值需要内核模式,但我什至不知道这个寄存器是什么?!

在大多数系统中,可以将寄存器分为三组:

1) 通用寄存器:这些是进程可以随意更改的寄存器。

2) 进程定义寄存器:这些寄存器只能在内核模式下更改。这些寄存器通常包括处理器状态和定义进程地址的寄存器space。请注意,处理器状态的值可以在用户模式下通过指令更改,但寄存器的值不能在用户模式下设置。

3)系统寄存器:这些是所有进程共享的寄存器。这些更改只能在内核模式下更改。例如,通常有一个寄存器定义了中断向量的位置。

1)So in the book that I'm reading it says for example changing IR register does not require switching from user mode to kernel mode, but i don't get it,

什么是"IR"寄存器。那通常被称为程序计数器(PC)吗?如果是这样,可以在用户模式下更改。

how can i know if it requires switching or not? and 2)also what about other registers, like DR, PSW, PC etc, how can i know whether it requires switching or not?

您必须阅读处理器的手册。但是,如果它不是通用寄存器,则需要在内核模式下才能更改它。

如果你的寄存器是 R0, R1, R2, .... 或者有一个像 SP, BP,PC 这样的别名你可以在用户模式下改变。否则,假设它需要内核模式。

3)one last problem is that at some point the book says something like : changing the value of "memory management registers" requires kernel mode, but i don't even know what this register is?!

这些取决于您的处理器。