Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
在长模式下更改 GDT 并更新 CS
我正在编写一个简单的自制 64 位操作系统 通过 UEFI 启动它 这意味着当我的代码开始执行时 它已经处于长模式 并且启用了分页 现在 退出 UEFI 引导服务后 我想用我自己的控制结构替换 UEFI 构建的所有控制结构 成功更改 CR3
Assembly
64bit
x8664
osdev
gdt
将 32 位和 64 位代码链接到一个二进制文件中
在对此问题的评论中 内核空间 C 代码中简单指针算术的意外行为 https stackoverflow com questions 49470691 unexpected behaviour in simple pointer arithm
gcc
x8664
osdev
binutils
在保护模式下读取键盘
我正在尝试制作 PS 2 键盘控制器 但无法正常工作 outb 0x60 0xED outb 0x60 2 Turn on CapsLock LED doesn t works char c 0 while c 1 if inb 0x60
c
x86
osdev
baremetal
protectedmode
内存映射显示的 RAM 多于物理可用内存
我正在开发一个小型 x86 内核 我正在访问并尝试读取 GRUB 在多重引导标头中提供的内存映射 我有一个 Intel i3 cpu 和 4 GiB RAM 在这台机器上运行时 我正在读取以下内存映射 Base Address Length
c
memory
memorymanagement
operatingsystem
osdev
使用BIOS int 13h访问不同磁头的扇区
我的磁盘每磁道有 63 个扇区 根据我的观察 我假设 我想使用 int 13h 读取 16 位引导加载程序上的扇区 例如 如果我想读取扇区号 63 我将执行以下操作 mov dl 0x80 Drive number mov dh 0 Thi
Assembly
x86
x8616
BootLoader
osdev
如何获取 RAM 大小、引导加载程序
我想问如何在引导加载程序中获取总 RAM 大小和可用 RAM 大小 截至目前 我知道如何获得较低的内存 但由于某种原因我无法将其打印到屏幕上 因为它保存在斧头寄存器中 这是我到目前为止所拥有的 BITS 16 BootLoader alwa
Assembly
x86
RAM
BootLoader
osdev
静态定义的 IDT [重复]
这个问题在这里已经有答案了 我正在开发一个启动时间要求很紧的项目 目标架构是基于 IA 32 的处理器 在 32 位保护模式下运行 已确定可以改进的领域之一是当前系统动态初始化处理器的 IDT 中断描述符表 由于我们没有任何即插即用设备并且
x86
interrupt
osdev
玩具操作系统文件系统[关闭]
Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经在 assembly c 中开发了一个运行基本终端的基本内核 我已将其设置为使用 grub 运行 iso 我想继续使用这个操作系
c
Assembly
filesystems
Kernel
osdev
如何将 bin 文件(512 字节)写入软盘的第一个扇区(扇区 0)?
如何将 bin 文件写入软盘 虚拟软盘 软盘映像的第一个扇区 我正在尝试启动一个简单的 512 字节引导加载程序 到处都显示 512 字节 的大小 所以我应该已经很好了 附加信息 引导加载程序仅显示一个字符串 我正在学习simple集会 有
Assembly
BootLoader
BIOS
osdev
floppy
MinGW的ld无法对非PE输出文件执行PE操作
我知道还有一些其他类似的问题 无论是否是 StackOverflow 我为此进行了很多研究 但仍然没有找到单一的解决方案 我正在做一个操作系统作为一个业余项目 我一直在汇编中完成所有工作 但现在我想加入 C 代码 为了测试 我制作了这个汇编
gcc
Assembly
MinGW
nasm
osdev
是什么原因导致“x.asm:(.text+0xd): 对‘y’的未定义引用”?
我已经很长一段时间没有使用 C 和汇编语言进行编程了 大约 2 年 现在我决定重新开始 但我想做一些更复杂的事情 我考虑过创建一个简单的内核 现在我在网上找到了这个源代码 启动 asm global loader extern kernel
gcc
Assembly
x86
nasm
osdev
在从中断处理程序返回之前,是否必须弹出由某些异常压入堆栈的错误代码?
我加载了一个包含 256 个条目的 idt 表 所有条目都指向类似的处理程序 对于异常 8 和 10 14 推送异常编号 这些异常会自动推送错误代码 对于其他人 推送 虚拟 错误代码和异常编号 然后跳转到一个公共处理程序 因此 当公共处理程
Assembly
operatingsystem
x86
interrupt
osdev
在保护模式下重新启动
在 x86 实模式下重启非常简单 您可以使用 BIOS 或 jmp 0xFFFF 0000 但是在保护模式下应该如何重新启动呢 有关端口 0xCF9 的信息 为了写入它 需要访问内核模式 即来自内核驱动程序 0xCF9端口可以获得三种复位类
x86
osdev
除了 malloc/free 之外,程序还需要操作系统提供其他东西吗?
我正在为我正在开发的操作系统设计内核 我实际上将其称为 核心 只是为了有所不同 但它基本上是相同的 如果我无法启动和运行多任务处理 内存管理和其他基本功能 那么操作系统本身的细节就无关紧要了 所以我需要首先解决这个问题 我有一些关于设计 m
operatingsystem
Kernel
malloc
heapmemory
osdev
程序集:用于自定义操作系统键盘支持的引导加载程序
我有一个工作简单的自定义操作系统 目前没有做太多事情 D 现在我正在使用一个没有键盘支持的汇编文件 boot s 汇编文件 boot s set magic number to 0x1BADB002 to identified by boo
Assembly
x86
att
osdev
Multiboot
移植 AT&T inline-asm inb / outb 包装器以与 gcc -masm=intel 一起使用
我目前正在开发 x86 操作系统 我尝试实现 inb 函数here https wiki osdev org Inline Assembly Examples它给了我Error Operand type mismatch for in 这也
c
gcc
x86
inlineassembly
osdev
Intel x86 - 中断服务例程责任
我没有真正意义上的问题 但我会尽力澄清内容问题 假设我们有一个微内核 PC Intel x86 32 位保护模式 中断描述符表 IDT and 中断服务程序 ISR 对于每个CPU异常 ISR 被成功调用 例如Division by Zer
Assembly
x86
intel
interrupt
osdev
如何告诉 qemu 将 ram 复制到文件中
我正在制作一个操作系统 并使用 Qemu 对其进行调试 我想要一种方法来读取一些指令末尾的内存的一些大块 怎么做 可以对 Qemu 说将 ram 复制到文件中吗 如果不是我能做什么 qmp 或 hmp 命令dump guest memory
qemu
osdev
使用自定义引导加载程序创建可引导 ISO 映像
我正在尝试将我用汇编语言编写的引导加载程序转换为ISO图像文件 以下是代码来自MikeOS http mikeos sourceforge net write your own os html引导加载程序 这是我的引导加载程序代码 BITS
Linux
Assembly
nasm
osdev
dd
如何从 Rust 调用原始地址?
我正在用 Rust 编写一个操作系统 需要直接调用我正在计算的虚拟地址 类型为u32 我预计这会相对简单 let code virtual address as extern C fn code 然而 这抱怨演员阵容不原始 它建议我使用Fr
Rust
functionpointers
osdev
1
2
»