gpt4 book ai didi

operating-system - 在 EFI 模式下启动是否意味着我将无法访问 BIOS 中断?

转载 作者:行者123 更新时间:2023-12-04 08:34:30 24 4
gpt4 key购买 nike

我正在尝试开发一个简单的操作系统。之前做过一些汇编程序,不得不用INT 10h以在屏幕上显示字符。我了解 UEFI 支持旧版 BIOS,并且可能仍然可以使用 INT 10h服务。但是,如果我选择构建纯 UEFI 可启动操作系统,我应该避免使用 INT 10h ?还是我看问题的方式不对?

换句话说,是否向下钻取 printfstdout (屏幕)最终调用 BIOS INT 10h ?或者是问题 - “SYS_WRITE 函数调用是基于 INT 10h 吗?”更合适?

我是否仍然需要创建一个 512 字节的引导扇区并将它们作为磁盘(或磁盘镜像)上的第零个扇区?请问位置0x7c00有没有意义了?

最佳答案

如果您的引导加载程序是 UEFI 引导加载程序(您会知道是否是),那么您 可能不会 完全使用 BIOS,包括 int 0x10 - 您必须使用 UEFI 引导服务,它提供 BIOS 否则将提供给传统引导系统的所有功能。

如果您没有编写 UEFI 引导加载程序,但您的硬件启用了 UEFI,您的引导加载程序将以“传统”模式加载,您将能够像以前一样使用 BIOS。

或者换句话说,您的引导镜像可以是 UEFI 引导加载程序,也可以是旧版 BIOS 镜像。传统 BIOS 镜像不能使用 UEFI,并且 UEFI 引导加载程序不能使用 BIOS。

In other words, does the drilled down printf to stdout (screen) end up calling the BIOS INT 10h? Or is the question - "Is SYS_WRITE function call based on INT 10h?" more appropriate?



取决于谁编写了您的 printf 函数(您是操作系统,没有人在您之下)。如果你调用 Int 0x10 并且没有设置 IDT 来处理它作为调用 UEFI 将字符写入屏幕,那么你只是在使用未定义的行为。

Will I still have to create a boot sector with 512 bytes and place them as the zeroth sector on a disk (or disk image)? Does the location 0x7c00 have significance anymore?



不,也没有。 UEFI 支持更大的引导加载程序,并且不会在 0x7C00 处加载。如果你想知道哪些内存区域有特殊意义,你必须让 UEFI 给你一个内存映射。

关于operating-system - 在 EFI 模式下启动是否意味着我将无法访问 BIOS 中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15101183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com