操作系统开发:内核,shell,网络,交叉编译等
我正在按照教程制作一个简单的引导加载程序和内核, 我使用的是 Windows,这是我正在使用的 makefile: 设置: nasm src oot oot.asm -f bin -o 构建 oot.bin 重命名构建...
我正在写一个简单的引导加载程序, 我正在使用这个 make file 命令将 main.bin 转换为 main_floppy.img cp -f 构建/main.bin 构建/main_floppy.img 但我不断收到此错误 nasm src/...
我在理解代码的幕布部分、它是如何工作的以及操作堆栈寄存器背后的内容时遇到问题。 ;我指的是那部分 mov SS, 斧头 移动sp,0x7c00 我需要一个
如何为单片操作系统内核及其应用程序定义不同的[global_allocator]
我们目前正在使用 Rust 开发单片操作系统 (x86)。我们的货物工作空间大致如下所示: 项目目录 |--src(包含所有内核相关代码,此处省略) | |--main.r...
我需要有关设计的知识和进一步的说明(要么是写在文档中,我很难通过在 Google 搜索中输入或使用 GitHub 存储库来找到)...
我目前正在开发自己的 64 位 x86-64 内核,现在尝试通过执行 SYSRET 指令来进入环 3。但是它失败了,我无法找出原因 这是我的设置方法...
仔细观察我开始编写的个人引导加载程序,我有一个问题。当我执行以下步骤时会出现此情况: 我创建了 bootloader.asm 并制作了 bin: 呐...
我正在开发一个操作系统作为一种爱好,并且在处理键盘IRQ时遇到了一个奇怪的问题,我不知道为什么,但是当出现的字符串太少时,我收到了无效的操作码ISR。 ..
我正在查看 brk(2) 的手册页,它说它会增加程序中断,因此会向堆分配更多内存。然而,根据我的理解,堆内存并不总是如此
我读了这个教程。在教程中,作者介绍了 A20 以及启用它的不同方法。当他写到“快速 A20 方法”时,他说这是通过 s...
调试引导加载程序代码时 GDB 中出现“无法找到当前函数的边界”错误
我目前正在学习引导加载程序开发和使用GDB进行调试,以观察实模式下禁用A20线时的内存变化。由于 QEMU 自动启用 A20 线,我尝试...
我一直在学习 MIT 的 JOS 课程,学习操作系统开发。现在,我正在深入研究引导加载程序的工作原理以及 x86 计算机架构的细节,尤其是内存段...
我从哪里开始制作基本的 riscv64 裸机操作系统? [已关闭]
我从哪里开始制作裸机操作系统? 我如何制作 riscv64 裸机操作系统?我的意思是,就像一个可以充当文本编辑器的操作系统,这样你就可以输入和使用退格键、移位键和大写字母……
看到这个问题的大家好。我有个问题。首先,我目前正在内核中编写 ELF 阅读器,现在遇到一个问题。这个问题出在字符串上。我的意思是...
我正在用C从头开始编写一个x86_32位内核,在编写了VGA驱动程序之后,我一直在尝试实现GDT以及键盘驱动程序的中断。然而,我的 GDT_flush() 很有趣......
我做了一个简单的hello world,内核''。它不打印任何东西。我做错了什么?
我遵循了本教程:https://www.youtube.com/watch?v=1rnA6wpF0o4,以便在启动后编写一个非常非常基本的 hello world,因为它在接下来的剧集中看起来非常完整。我的问题是...
Os Dev 的 PCI IDE 教程中的 insl 函数是做什么用的?
这是调用insl的函数。 void ide_read_buffer(无符号字符通道,无符号字符寄存器,无符号整数缓冲区, 无符号整型四元组) { /* 警告:此代码包含...
我目前正在学习一些操作系统开发并编写了一个非常基本的引导加载程序。 它只需要软盘映像的一些扇区并将其加载到 RAM 的地址 0x10000 处。然后切换到 32-...
为什么使用非完全序列化指令时,用`mov CR0, ...`改变`PG`后需要跳转一次?
英特尔® 64 和 IA-32 架构软件开发人员手册第 3A 卷 9.3 序列化指令 当执行启用或禁用分页的指令(即更改 PG...