x86 - 在特定的CPU环中不能发出哪些指令

标签 x86 cpu

根据this source (Level 3 - 5) 特定的 CPU ring 不能做某些事情,比如 ring 1,2,3 的代码不能设置 GDT,因为 os kernel 会崩溃。

虽然很明显 Ring 0 可以执行所有指令,我想知道在环1、2和3中哪些指令不能发出?

我在维基百科或 osdev 和类似来源上都找不到任何说明不能在特定环中发出哪些指令的信息。

最佳答案

Ring 3 中不能执行以下指令:

LGDT
LLDT
LTR
LIDT
MOV (to and from control registers only)
MOV (to and from debug registers only)
LMSW
CLTS
INVD
WBINVD
INVLPG
HLT
RDMSR
WRMSR
RDPMC
RDTSC

关于x86 - 在特定的CPU环中不能发出哪些指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39077266/

相关文章:

c - 提高并发进程的效率 - 设置 CPU 限制或其他?

python - TensorFlow默认使用多少个内核(不使用Coordinator)?

c - main() 有时会在 x86 上使用 -fomit-frame-pointer 保留帧指针

algorithm - 如何比较同一算法的两个实现? (通过检查他们的汇编代码)

clang:有没有办法指定 c11 原子操作中使用的低级指令?

c - 为什么缓存不能正常工作?

assembly - "rep; nop;"在 x86 汇编中意味着什么?和 "pause"指令一样吗?

debugging - EBP 寄存器(基帧指针)是否仅用于 x86 中的调试?

assembly - x86 程序集直接写入 VGA 简单操作系统

swift - 我可以强制 Swift 代码使用所有内核吗?