在保护模式下重新启动

2024-02-04

在 x86 实模式下重启非常简单。您可以使用 BIOS 或:

jmp 0xFFFF:0000

但是在保护模式下应该如何重新启动呢?


有关端口 0xCF9 的信息。
为了写入它,需要访问内核模式(即来自内核驱动程序)。

0xCF9端口可以获得三种复位类型的三个值:

将 4 写入 0xCF9:(INIT)将初始化 CPU。这意味着它将跳转到启动的初始位置,但它会保持许多 CPU 元素不变。大多数内部表、chaches 等将在 Init 调用中保持不变(但在调用期间可能会发生变化)。

将 6 写入 0xCF9:(复位)将重置 CPU,并将所有内部表缓存等清除到初始状态。

将 0xE 写入 0xCF9:(重新启动)将重新启动主板及其附带的所有部件。

Windows 驱动程序中的示例:

__outbyte(0xCF9, 0xE);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在保护模式下重新启动 的相关文章

  • Little Endian 并推入 nasm

    我不明白为什么代码的输出是Ole 小字节序不应该影响push命令 global start section data x dd 3 section text start mov eax 4 mov ebx 1 mov dword x 0x0
  • x86 32 位汇编代码是否有效 x86 64 位汇编代码?

    所有 x86 32 位汇编代码都对 x86 64 位汇编代码有效吗 我想知道32位汇编代码是否是64位汇编代码的子集 即每个32位汇编代码都可以在64位环境中运行 我想答案是肯定的 因为64位Windows能够执行32位程序 但是后来我看到
  • x86 部分寄存器使用

    如果我在 8 位寄存器中保存一个值 比如说 10DH然后是 8 位寄存器中的另一个值 15DL 这会起作用吗 或者它们会互相覆盖吗 因为它们都是 32 位的EDX登记 mov 10 DH mov 15 DL cmp DL DH jle do
  • x86 asm 反汇编程序库

    是否有任何可从 NET 调用的库 我可以在其中传递二进制数据并将其反汇编为 x86 汇编代码 如果您不介意使用 P Invoke 绑定到非托管 dll 请查看比引擎 http www beaengine org 它是您可能找到的最好的反汇编
  • SSE加载和添加

    假设我有两个由两个类型数组表示的向量double 每个尺寸为2 我想添加相应的位置 所以假设向量i0 and i1 我想补充一下i0 0 i1 0 and i0 1 i1 1 一起 由于类型是double 我需要两个寄存器 诀窍是把i0 0
  • 计算 Amd Zen 2 处理器上的 L3 缓存访问事件

    我试图找出与 perf stat 命令一起使用的事件来计算 AMD Zen 2 处理器上的 L3 缓存访问次数 根据 PPR http developer amd com wordpress media 2017 11 54945 PPR
  • FASM 是否使用 Intel 语法?

    我尝试在 FASM 中编译以下代码 mov DWORD PTR ebp 4 1234567 它给了我一个 无效表达式 错误 但是以下代码有效 mov DWORD ebp 4 1234567 那么 FASM 是否使用 Intel 语法 我假设
  • 为什么允许 gcc 从结构推测加载?

    显示 gcc 优化和可能出现故障的用户代码的示例 下面代码片段中的函数 foo 将仅加载结构成员 A 或 B 之一 至少这是未优化代码的意图 typedef struct int A int B Pair int foo const Pai
  • x86 汇编中 cmove 指令的用途?

    反汇编可执行文件时我遇到了cmove操作说明 我已经在互联网上搜索过 但我只发现这是一个有条件的移动 如果源和目的地相等mov发生 我还不明白为什么我需要它 因为它不会改变操作数 它的目的是什么 The CMOVcc指令不比较源和目标 它们
  • 在长模式下更改 GDT 并更新 CS

    我正在编写一个简单的自制 64 位操作系统 通过 UEFI 启动它 这意味着当我的代码开始执行时 它已经处于长模式 并且启用了分页 现在 退出 UEFI 引导服务后 我想用我自己的控制结构替换 UEFI 构建的所有控制结构 成功更改 CR3
  • 获取比较指令的值

    据我了解 cmp 指令将设置标志寄存器中的一些位 然后 您可以使用 jle jnp 等指令基于这些指令进行分支 我想知道如何从比较中恢复整数值 示例 以下是有效的 c 语法 y x a gt 13 因此 a 与 13 进行比较 得到 tru
  • 跨 AVX 通道的最佳方式是什么?

    有些问题具有类似的标题 但我的问题涉及其他地方未涵盖的一个非常具体的用例 我有 4 个 128d 寄存器 x0 x1 x2 x3 我想将它们的内容重新组合在 5 个 256d 寄存器 y0 y1 y2 y3 y4 中 以准备其他计算 on
  • gcc 如何知道内联汇编中使用的寄存器大小?

    我有内联汇编代码 define read msr index buf asm volatile rdmsr d buf 1 a buf 0 c index 使用该宏的代码 u32 buf 2 read msr 0x173 buf 我发现反汇
  • 预取双类成员需要转换为 char*?

    我有一个正在使用的课程 mm prefetch 预先请求包含 double 类型的类成员的缓存行 class MyClass double getDouble return dbl other members double dbl othe
  • 为什么 SSE 对齐读取 + 随机播放在某些 CPU 上比未对齐读取慢,而在其他 CPU 上则不然?

    在尝试优化有限差分代码所需的未对齐读取时 我更改了未对齐的负载 如下所示 m128 pm1 mm loadu ps H k 1 进入这个对齐的读取 随机播放代码 m128 p0 mm load ps H k m128 pm4 mm load
  • 为 Visual Studio 应用程序设置平台目标的目的是什么?

    对于任何 VS 项目 都可以在该项目的构建属性中设置平台目标 您可以将其设置为任何 CPU x86 x64 或 Itanium 我的问题是 如果我将此值设置为 x86 是否意味着我无法在 x64 计算机上运行该项目 如果是这样 为什么还要使
  • 为什么不能执行 mov [eax], [ebx] [重复]

    这个问题在这里已经有答案了 我可以做这个 mov eax ebx 和这个 mov eax ebx 甚至这个 mov eax ebx 但不是这个 错误C2415 mov eax ebx 只是wtf 为什么 它与 ptr1 ptr2 相同 为什
  • 奇怪的 MSC 8.0 错误:“ESP 的值未在函数调用中正确保存...”

    我们最近尝试将一些 Visual Studio 项目分解为库 并且在测试项目中一切似乎都编译和构建得很好 其中一个库项目作为依赖项 然而 尝试运行该应用程序给我们带来了以下令人讨厌的运行时错误消息 运行时检查失败 0 ESP 的值未在函数调
  • 在 x86-64 CPU 上通过交叉修改代码重现意外行为

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

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

随机推荐

  • 可以制作全局 Var。 C#

    C 中是否可以将变量设置为全局变量 好吧 你可以创建一个公共静态变量 public static class Globals public static string Foo 不过 我强烈建议你not去做这个 不清楚什么在使用该变量 没有任
  • 使用 Data.Table 有条件地选择组内的行

    我正在寻找使用 data table 的解决方案 我有一个包含以下列的 data table data lt data frame GROUP c 3 3 4 4 5 6 YEAR c 1979 1985 1999 2011 2012 19
  • 如何禁用 freedrawfabricjs 选择

    在 FabricJs 中使用 FreeDrawing 绘制某些内容后 您可以选择绘制的内容并移动它 有没有办法禁用此选择 如果您不需要在画布上进行任何交互 您可以使用静态画布 var canvas this canvas new fabri
  • Froala WYSIWYG 编辑器未显示 React 中的所有工具栏按钮

    工具栏按钮未显示在由 facebook create react app 创建的 React 应用程序中 我尝试在 src index tsx 中或在使用组件之前导入 JS 和 CSS 文件 我还尝试导入单独的插件 他们都没有工作 Froa
  • 在php中识别服务器端的浏览器

    我有一个网站 当用户单击特定页面 例如identify php 时 我想找到客户端正在使用的浏览器类型 浏览器可以是 mozilla IE opera chrome 或任何其他移动设备 例如 SonyEricssonK610i SAMSUN
  • 如何解决 AspNet Core 缺少依赖项的问题?

    因此 我对 project json 进行了更改 这导致了重新恢复 从而产生了一堆无法解析的依赖项 你怎么知道这里发生了什么 这绝对有效 因为我针对这个 project json 文件编写了大量代码 dependencies EntityF
  • urllib3 支持 HTTP/2 请求吗?会吗?

    我对各种 python HTTP 库了解如下 Requests https docs python requests org en latest does 不支持HTTP 2请求 https stackoverflow com q 4493
  • javaquartz调度程序立即启动一个新作业

    是否可以创建一个立即触发的作业 当我希望现在触发该作业时 我使用当前日期和时间构建了一个 cron 表达式字符串 我认为它太复杂了 是否有另一种方法可以立即触发该作业 提前致谢 是的 使用下面的Trigger立即解雇你的工作 而不是等待 C
  • “int* ptr = int()”值初始化如何不非法?

    以下代码 取自从这里 https stackoverflow com questions 8067568 how do i value initialize a type pointer using type like syntax 806
  • Spring Batch - “job”作用域 bean 不能注入到“job”或“step”作用域 bean

    我正在使用 Spring Batch 版本 3 0 2 RELEASE 和 Spring Framework 版本 3 2 12 RELEASE 我正在尝试将一个工作范围的 bean 注入到另一个工作范围的 bean 中 我的配置看起来像这
  • 如何使用 x-www-form-urlencoded 正文发送 post 请求

    在java中 我可以如何发送请求x www form urlencoded header 我不明白如何发送带有键值的正文 如上面的屏幕截图所示 我试过这段代码 String urlParameters cafedra name data t
  • 比较属性集以找到最佳匹配

    似乎有类似的问题 但又不完全是 我尝试走这条路 比较数据集并返回最佳匹配 https stackoverflow com questions 1370565 compare data sets and return best match 但
  • Mongoose:findOneAndUpdate 不返回更新的文档

    下面是我的代码 var mongoose require mongoose mongoose connect mongodb localhost test var Cat mongoose model Cat name String age
  • JavaScript 全局变量的生命周期

    我在 w3schools 上阅读了以下内容 但我不明白第二部分的含义 全局变量 对于加载到同一窗口中的新页面仍然可用 任何人都可以启发我吗 在 Web 浏览器中 当您关闭浏览器窗口 或选项卡 时 全局变量将被删除 但对于加载到同一窗口中的新
  • 如何插入多行 - 需要循环吗?

    我有以下声明 insert into forecast entry user role xref user master id role id created date created by values 276 user master i
  • 获取 Mailgun 中打开或单击的电子邮件的主题

    我已设置 Mailgun 域来跟踪我发送的电子邮件的打开和点击情况Laravel https laravel com docs 5 7 mail introduction app 现在我想设置webhooks https documenta
  • 使 Pydantic BaseModel 字段可选,包括 PATCH 的子模型

    正如已经问过的similar有疑问 我要支持PATCHFastApi 应用程序的操作 调用者可以根据需要指定 Pydantic 的任意数量的字段BaseModel 有子模型 这样高效PATCH可以执行操作 而调用者不必仅仅为了更新两个或三个
  • 注销后销毁握手。套接字.io

    您好 我正在尝试将聊天构建到应用程序中 我想知道的是 当用户注销网站时 我如何销毁与该会话关联的 socket io 握手 以便用户在注销时无法从另一个选项卡发送消息 我正在使用expressjs 如果有帮助的话 好吧 万一有人发现这个并想
  • 查找父节点所选文本的范围

    我想找到所选文本相对于父元素的范围 所以在这个 p 元素 即anchorOffset focusOffset 狐狸 是 16 19 p p The quick brown fox jumps over the lazy dog p 但如果我
  • 在保护模式下重新启动

    在 x86 实模式下重启非常简单 您可以使用 BIOS 或 jmp 0xFFFF 0000 但是在保护模式下应该如何重新启动呢 有关端口 0xCF9 的信息 为了写入它 需要访问内核模式 即来自内核驱动程序 0xCF9端口可以获得三种复位类