19得票9回答
最适合学习的教育操作系统是什么?

如果要从零开始编写自己的x86操作系统,最好学习哪个操作系统?

14得票1回答
Write::write_fmt在裸金属上会导致页错误

我的实验代码在裸机x86_64-metal上运行时崩溃(当IDT尚未设置时出现页面故障),但在aarch64上完美运行。 通过仔细追踪,我发现导致此页面故障的原因是作为参数传递给core::fmt::ArgumentV1::new()函数的函数"f"的地址损坏(远高于0x200_000,而只...

32得票6回答
LibC操作系统存在吗?

我记得听说过一种可以嵌入的操作系统,它本质上只是libc(也许它支持c ++)。它没有内核、管道或其他你从操作系统中期望的东西。我试图在维基百科上查找,但我没有看到它被列出。 这样的操作系统存在吗?是否有一种操作系统支持仅终端或C/C++ + (tcp)套接字以与VM之外的环境进行通信?对我...

9得票2回答
如何解决qemu gdb调试错误:远程“g”数据包的回复太长?

我目前正在学习引导程序和内核开发(刚开始)。我正在结合使用以下两个资源: https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf, 以及在 https://github.com/cfenollosa/os-...

7得票1回答
使引导加载程序可以加载USB的第二个扇区。

我正在学习汇编语言。我写了一个简单的引导程序。在测试后,它没有起作用。以下是我的代码: [bits 16] [org 0x7c00] jmp start data: wolf_wel_msg db 'Welcome to Bootloader!!!',0x0D,0x0A,0 wolf_k...

7得票1回答
如何使用Visual Studio构建内核镜像?

我想使用Visual C++为x86机器构建一个嵌入式内核。我有一些C和汇编代码文件需要编译,我希望将它们链接在一起,并以与GRUB等多引导加载程序兼容的方式进行。

7得票4回答
使用nasm混合32位和16位代码

这是一个低级系统问题。 我需要混合32位和16位代码,因为我正在尝试从保护模式返回到实模式。作为背景信息,我的代码在GRUB引导后执行,所以没有任何麻烦的操作系统告诉我可以做什么和不能做什么。 无论如何,我使用[BITS 32]和[BITS 16]来告诉nasm应该使用哪种类型的操作,但是...

308得票4回答
如何在没有操作系统的情况下运行程序?

如何在没有操作系统运行的情况下单独运行程序?您可以创建汇编程序,使计算机能够在启动时加载和运行它们,例如从闪存驱动器引导计算机并运行CPU上的程序吗?

7得票1回答
需要在汇编/编译/链接时构建静态IDT和GDT的解决方案

这个问题源于多年来许多人遇到的问题,特别是在x86操作系统开发中。最近有一个相关NASM问题被编辑推上来了。在那种情况下,使用NASM的人在汇编时会出现以下错误: shift operator may only be applied to scalar values 另一个相关问题询问...

12得票2回答
C代码中的栈三重故障

我正在编写一个玩具内核用于学习目的,但是遇到了一些问题。我已经创建了一个简单的引导加载程序,从软盘中加载一个段(该段代码是32位代码),然后引导加载程序启用A20门并打开保护模式。如果我使用汇编语言编写32位代码,我可以很好地跳转到它,但是如果我使用C语言编写,则会出现三重错误。当我反汇编C代...