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

2023-12-11

根据这个来源(级别3 - 5)特定CPU环不能做某些事情,例如环1、2、3代码不能设置GDT,因为操作系统内核会崩溃。

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

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


以下指令不能在环 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哪些指令不能在特定的CPU环中发出 的相关文章

  • CALL指令是否总是将EIP指向的地址压入堆栈?

    x86架构中函数调用时是否存在返回地址不入栈的情况 No CALL根据定义 将在跳转到目标地址之前将返回地址压入堆栈 该返回地址是EIP or RIP sizeof call instruction 通常为 5 个字节 英特尔 64 和 I
  • Visual Studio 2017 上的简单装配程序

    386 model flat c stack 100h printf PROTO arg1 Ptr Byte data msg1 byte Hello World 0Ah 0 code main proc INVOKE printf ADD
  • 普通的 x86 或 AMD PC 是直接从 ROM 运行启动/BIOS 代码,还是先将其复制到 RAM? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我知道现代计算机已经修改了哈佛架构 它们可以从保存数据的地方以外的地方读取指令 这一事实是否允许它们直接从 ROM 芯片获取指令 他们是先
  • 在 x86-64 CPU 上通过交叉修改代码重现意外行为

    Question 对于可能在 x86 或 x86 x64 系统上触发意外行为的交叉修改代码有哪些想法 在这些系统中 交叉修改代码中的所有操作均已正确完成 但在执行处理器之前执行序列化指令除外修改代码 如下所述 我有一个 Core 2 Duo
  • Intel 64 和 IA-32 上的 MESI 有何意义

    MESI 的要点是保留共享内存系统的概念 然而 对于存储缓冲区 事情就变得复杂了 一旦数据到达 MESI 实现的缓存 下游内存就会保持一致 然而 在此之前 每个核心可能对内存位置 X 中的内容存在分歧 具体取决于每个核心的本地存储缓冲区中的
  • 如何在 Linux x86_64 上模拟 iret

    我正在编写一个基于 Intel VT 的调试器 由于当 NMI Exiting 1 时 iret 指令在 vmx guest 中的性能发生了变化 所以我应该自己处理vmx主机中的NMI 否则 guest会出现nmi可重入错误 我查了英特尔手
  • X86 预取优化:“计算 goto”线程代码

    我有一个相当重要的问题 我的计算图有循环和多个 计算路径 我没有制作一个调度程序循环 其中每个顶点将被一一调用 而是将所有预先分配的 框架对象 放置在堆中 代码 数据 这有点类似于线程代码 甚至更好 CPS 只是在堆中跳转 执行代码 每个代
  • 如何在程序中将自己缝合到自己的尾部,无限循环地封装 64KB 代码段?

    如果指令的顺序执行经过偏移量 65535 则8086将从同一代码段中的偏移量 0 处获取下一个指令字节 接下来的 COM 程序利用这一事实 不断将其整个代码 总共 32 个字节 缝合到自己的尾部 环绕在 64KB 代码段中 你可以称之为二元
  • 是否可以在VM内使用VMX CPU指令?

    VM guest 内部的进程是否有可能使用 VMX AMD V VT x CPU 指令 然后由外部 VMM 处理而不是直接在 CPU 上处理 Edit 假设外部VM使用VMX本身来管理其虚拟客户机 即它在Ring 1中运行 如果可能的话 是
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • CPU 周期与总 CPU 时间

    在 Windows 上 GetProcessTimes 和 QueryProcessCycleTime 可用于获取应用程序所有线程的总计 我期望 显然是天真地 找到总周期数和总处理器时间 用户 内核 之间的比例关系 当转换为相同的单位 秒
  • 避免 gcc 函数序言开销?

    我最近遇到了很多 gcc 在 x86 上生成非常糟糕的代码的函数 它们都符合以下模式 if some condition do something really simple and return else something comple
  • 为什么X86中没有NAND、NOR和XNOR指令?

    它们是您可以在计算机上执行的最简单的 指令 之一 它们是我亲自实施的第一个指令 执行 NOT AND x y 会使执行时间和依赖链长度和代码大小加倍 BMI1 引入了 andnot 这是一个有意义的补充 是一个独特的操作 为什么不是这个问题
  • 如何检查设备是否“快”足够

    我找不到更好的措辞来回答我的问题 在我的应用程序中的某个时刻 我设置了一些非常密集的动画 事实是 在高端设备上 动画运行流畅且赏心悦目 另一方面 我测试的一款低端设备在制作动画时的性能非常糟糕 为了将用户体验放在第一位 我想在计算能力足够的
  • 汇编器8086将32位数字除以16位数字

    我尝试将 32 位数字除以 16 位数字 例如 10000000h 除以 2000h 根据我尝试做的设计除以 右 4 位数字除以除数 然后左 4 位数字除以除数 这是我的代码 DATA num dd 10000000h divisor dw
  • Grub 和进入实模式(低级汇编语言编程)

    我一直在开发一个玩具操作系统 并一直使用 grub 作为我的引导加载程序 最近尝试使用 VGA 时 我发现无法使用硬件中断 我发现这是因为我被 grub 置于保护模式 有人知道如何在不删除 grub 的情况下回到实模式吗 如果您使用 GRU
  • 测试 xmm/ymm 寄存器是否为零的更快方法?

    It s fortunate that PTEST does not affect the carry flag but only sets the rather awkward ZF also affects both CF and ZF
  • 如果默认禁用 A20 线,如何在 0xFFFFFFF0 处访问 BIOS ROM?

    我正在阅读有关 A20 线的信息http wiki osdev org A20 Line http wiki osdev org A20 Line 这似乎表明 A20 线默认被禁用 在Pentium上 如果硬复位后立即输出的地址为0xFFF
  • mfence 和 asm 易失性 ("" : : : "内存") 的区别

    据我了解 mfence是硬件内存屏障 而asm volatile memory 是编译器障碍 但是 可以asm volatile memory 用来代替 mfence 我感到困惑的原因是这个链接 http gcc gnu org ml gc

随机推荐

  • JQuery 或 vanilla Javascript 中的 DOM Mutation 事件

    JQuery 或普通 Javascript 中是否存在触发跨浏览器的 DOM 突变事件 为了澄清这一点 假设我的页面上有一个脚本 它将一个 div 插入到正文中 我无权访问该脚本 也不知道 div 何时被插入 我想知道是否有一个 DOM 突
  • Visual Studio Code 不运行 Python

    我在 Windows 10 上使用最新版本的 Visual Studio Code 和 Python 3 6 64 位 我安装了 Python 扩展 微软制作的扩展 每次我尝试运行一个简单的程序 例如 print Hello World 时
  • jquery .load() 函数在phonegap下不起作用

    jquery load 函数在 iPad 上的 PhoneGap 下不起作用 它在移动 Safari 中工作得很好 但它在 Phonegap 应用程序中不起作用 任何帮助 将不胜感激 更新 代码如下 this image container
  • 理解 C 命名空间

    引用自here 在 C 中 有两种不同的类型命名空间 struct union enum 标记名称的命名空间和 typedef 名称的命名空间 name c cat name c include
  • 如何在 Javascript 中获取 X509Certificate 指纹?

    我需要用 javascript 编写一个函数 forge 获取 pfx 证书的缩略图 我创建了一个测试证书 mypfx pfx 通过使用 C X509Certificate2 库 我可以通过传递文件字节数组和密码来查看 X509Certif
  • 如何在 MySQL 查询中使用 BETWEEN 的反义词? [复制]

    这个问题在这里已经有答案了 我有一个工作查询 它 使用 BETWEEN 来查找日期范围内的结果 我需要的是相反的结果或不是给定日期范围之间的结果 这是下面的查询 SELECT loanac id loanac name loanac lac
  • 摆动计时器 - 时间波动

    我在游戏中使用了 Swing Timer 但是当游戏运行时 它似乎有时运行平稳 有时又变慢 为什么时间会波动 我该如何解决它 import java awt Color import java awt Graphics import jav
  • Python mySQL 更新,工作但不更新表

    我有一个 python 脚本需要更新 mysql 数据库 到目前为止我有 dbb MySQLdb connect host localhost user user passwd pass db database try curb dbb c
  • 使用 tableGrob 在表中添加上标

    如何在表格中添加上标 例如 列b of df会将重复索引指示为上标 我可以考虑引入列的值b作为表达 但可能有更好的方法 Data df lt data frame a 1 6 b rep letters 1 3 each 2 Code li
  • git 正在尝试上传已手动删除的文件

    我在旧的提交中添加了一个文件 并且没有推送该提交 然后我从目录中删除了该文件 之后 我做了更多更改并添加了更多提交 现在每次我尝试推送代码时都会遇到此错误git push u origin master Counting objects 5
  • 两个ModalViewController

    我有一个 navigationController 从中启动 ModalViewController 在此 ModalViewController 中 我将显示 MailComposer 它本身是另一个 ModalViewControlle
  • 我已完成的作业的 AWS EMR 减速器输出在哪里(应该在 S3 上,但那里什么也没有)?

    我遇到一个问题 即我在 AWS EMR 上的 Hadoop 作业未保存到 S3 当我在较小的样本上运行作业时 作业可以很好地存储输出 当我在完整数据集上运行相同的命令时 作业再次完成 但 S3 上不存在任何我指定要输出的内容 显然有一个20
  • 根据前面的单词从段落中提取数值

    我正在处理列中的一些大文本字段 经过一些清理后 我得到如下所示的内容 truth val 5 xerb Scale 2 perb Scale 1 我想提取数字 2 我试图匹配字符串 xerb Scale 然后提取 2 我尝试捕获包含 2 的
  • Riverpod 监听在 statenotifier 更改后没有被调用

    我构建了一个应用程序 用户可以在其中选择他的位置 我们将显示附近的可用项目 class LocationState LatLng location LocationState this location LocationState copy
  • DLLNotFoundException - Unity3D 插件

    我在某些 Windows 机器上的独立构建中遇到 DLLNotFoundException 其他机器则运行良好 Dll 文件肯定在plugins 文件夹中 也将其复制到projectName Data 文件夹中 但没有区别 还尝试将 dll
  • Jersey 2.x 安全上下文不起作用?

    当我尝试创建 java jersey 应用程序时 身份验证角色对我不起作用 Java 代码 package org student resource import javax annotation security PermitAll im
  • 我们可以在运行时为 scala 类分配/更改特征吗?如何 - 有示例代码吗?喜欢策略模式(四帮设计模式)

    解释一下我的问题 类别 玩具 特质1 说话像男性 特质2 说话像女人 我可以在运行时更改玩具的行为 特征 以便有时同一个对象像男性一样说话 有时同一个对象像女性一样说话吗 我想改变运行时的说话行为 sealed trait Speaker
  • Visual Studio 2012 中自己的双选项卡模板

    因此 Visual Studio 中有一个技巧 当您键入 for 然后双击 Tab 键时 Visual Studio 将创建 for int i 0 i lt length i 有什么方法可以创建我自己的模板吗 因为我不使用 LINQ 所以
  • 使用Ajc编译器和Spring问题AspectJ

    当我尝试使用 ajc 编译器通过 spring 来执行spectj时 出现以下错误 当我删除aspectj时 代码工作正常 编译时编织是否有任何问题导致 caused by java lang ExceptionInInitializerE
  • 哪些指令不能在特定的CPU环中发出

    根据这个来源 级别3 5 特定CPU环不能做某些事情 例如环1 2 3代码不能设置GDT 因为操作系统内核会崩溃 虽然很明显Ring 0可以执行所有指令 我想知道哪些指令不能在环1 环2和环3中发出 我在维基百科或 osdev 以及类似的来