操作系统开发-在保护模式下执行第一条指令

天鹅座

我指的是Broken Thorn的OS开发教程。我目前处于执行第二阶段引导加载程序以加载GDT并进入保护模式的阶段。

我了解GDT的工作原理以及如何进入保护模式。但是,我对加载cr0寄存器后执行的第一条指令感到困惑

jmp 08h:Stage3      ; far jump to fix CS. Remember that the code selector is 0x8!

此时,CS尚未加载指向代码描述符的选择器值,并且我们已经处于保护模式。此CS值可能不同于用于执行实模式指令的值,因此IP值的增加也将导致地址与的地址不同jmp那么这是否会导致基于CS的值执行一些垃圾代码?还是我缺少什么?

qwm

每个段选择器都有一个包含其实际基地址的阴影部分。该隐藏的部分在段加载说明中进行了更新。

这意味着在执行远跳转或其他指令加载之前cs,它仍然具有设置为实模式的基地址,并且eip相对于其计算偏移量。

阅读:英特尔软件开发人员手册,第3卷,第3章。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

操作系统开发捷径

来自分类Dev

多平台应用程序开发与操作系统开发

来自分类Dev

为操作系统开发自定义文件系统

来自分类Dev

可以在操作系统开发中使用基于LLVM的语言吗?

来自分类Dev

COSMOS-操作系统开发-错误设置未启动?

来自分类Dev

操作系统开发:实现FAT12写功能

来自分类Dev

Chrome操作系统开发人员工具已禁用

来自分类Dev

操作系统开发:实现FAT12写功能

来自分类Dev

Chrome操作系统开发人员工具已禁用

来自分类Dev

Chrome操作系统:开发人员模式是否会删除现有的Ubuntu安装?

来自分类Dev

为嵌入式系统开发一个简单的引导程序

来自分类Dev

Linux操作系统如何“基于”另一个Linux操作系统?

来自分类Dev

Dockerfile 的第一行 - 什么操作系统?

来自分类Dev

开发基于Ubuntu的新操作系统

来自分类Dev

启动的操作系统取决于启动模式

来自分类Dev

操作系统提供哪些服务来执行C程序

来自分类Dev

在节点/ Grunt中执行特定于操作系统的脚本

来自分类Dev

操作系统提供哪些服务来执行C程序

来自分类Dev

如何阻止操作系统要求执行降价文件?

来自分类Dev

在优胜美地操作系统下使用Latex

来自分类Dev

不同的操作系统环境下的JUnit测试的不同预期

来自分类Dev

GNU GRUB是安装在操作系统下还是没有安装在任何操作系统下?

来自分类Dev

一台机器上的多个操作系统

来自分类Dev

Ubuntu 作为唯一的办公/商业操作系统?

来自分类Dev

Gradle:强制另一个操作系统

来自分类Dev

如果一个操作系统是虚拟的,则在两个操作系统之间复制文件

来自分类Dev

如果一个操作系统是虚拟的,则在两个操作系统之间复制文件

来自分类Dev

在同一硬件上使用64位操作系统与32位操作系统相比有什么好处?

来自分类Dev

是否可以从当前操作系统上的另一个操作系统恢复覆盖的文件?

Related 相关文章

  1. 1

    操作系统开发捷径

  2. 2

    多平台应用程序开发与操作系统开发

  3. 3

    为操作系统开发自定义文件系统

  4. 4

    可以在操作系统开发中使用基于LLVM的语言吗?

  5. 5

    COSMOS-操作系统开发-错误设置未启动?

  6. 6

    操作系统开发:实现FAT12写功能

  7. 7

    Chrome操作系统开发人员工具已禁用

  8. 8

    操作系统开发:实现FAT12写功能

  9. 9

    Chrome操作系统开发人员工具已禁用

  10. 10

    Chrome操作系统:开发人员模式是否会删除现有的Ubuntu安装?

  11. 11

    为嵌入式系统开发一个简单的引导程序

  12. 12

    Linux操作系统如何“基于”另一个Linux操作系统?

  13. 13

    Dockerfile 的第一行 - 什么操作系统?

  14. 14

    开发基于Ubuntu的新操作系统

  15. 15

    启动的操作系统取决于启动模式

  16. 16

    操作系统提供哪些服务来执行C程序

  17. 17

    在节点/ Grunt中执行特定于操作系统的脚本

  18. 18

    操作系统提供哪些服务来执行C程序

  19. 19

    如何阻止操作系统要求执行降价文件?

  20. 20

    在优胜美地操作系统下使用Latex

  21. 21

    不同的操作系统环境下的JUnit测试的不同预期

  22. 22

    GNU GRUB是安装在操作系统下还是没有安装在任何操作系统下?

  23. 23

    一台机器上的多个操作系统

  24. 24

    Ubuntu 作为唯一的办公/商业操作系统?

  25. 25

    Gradle:强制另一个操作系统

  26. 26

    如果一个操作系统是虚拟的,则在两个操作系统之间复制文件

  27. 27

    如果一个操作系统是虚拟的,则在两个操作系统之间复制文件

  28. 28

    在同一硬件上使用64位操作系统与32位操作系统相比有什么好处?

  29. 29

    是否可以从当前操作系统上的另一个操作系统恢复覆盖的文件?

热门标签

归档