osdev

    1热度

    1回答

    注 - 我还没有分页设置,我的内核是多引导的ELF。我有irqs和isrs完成。 所以我这里有这种气体文件: .section .text .global _start _start: mov $0xDEADBEEF, %eax 而且GRUB2安装加载平二进制文件: menuentry "fOS-Terminal (25x80)" { multiboot /boot/

    1热度

    2回答

    OS时,我有以下bootloader代码似乎运行在硬盘上完美的罚款: [bits 16] [org 0x7c00] bootld_start: KERNEL_OFFSET equ 0x2000 xor ax, ax ; Explicitly set ES = DS = 0 mov ds, ax mov es, ax mov bx, 0x8

    1热度

    2回答

    “无法从引导介质中读取”我也跟着上Write your own operating system in 1 hour本系列教程创建一个基本的操作系统只有4个文件只是打印的“Hello World”:Makefile,kernel.cpp,loader.s和linker.ld。 我正在创建一个mykernel.iso文件,但是当我将它启动到VirtualBox时,出现错误“无法从引导介质读取:系统暂

    1热度

    3回答

    我想提出一个键盘驱动程序我的OSDev OS和我在我的kbd.c一个问题: kbd.c: In function 'scancoderec': kbd.c:56:2: error: variable-sized object may not be initialized register int (ScanCode[strlen(ValEAX)-8]) = 0x00; /* Remove la

    1热度

    1回答

    我目前正在研究大学任务的基本操作系统。我正在使用x86汇编语言。 我似乎遇到了切换到引导加载程序第二阶段的问题,导致上面的错误,当我尝试在Bochs中运行应用程序时。从我的测试中,我认为错误是由于应用程序没有正确地从内存中读取程序而导致的,无论是由于引导加载程序第一阶段的错误还是makefile中的错误。我将包括这两个以下: 引导程序的第一阶段: BITS 16 ORG 7C00h jmp

    0热度

    1回答

    我正在创建一个小例程,用lidt指令加载idtr寄存器。 我创造了这个代码 - global load_idt load_idt: mov eax, esp add eax, 4 lidt eax ;<-----------------LINE 9 ret 但是,当我编译这个使用NASM,我得到一个错误 - kernel/kernel_start.a

    1热度

    1回答

    我想写一个简单的操作系统,使用GCC,这将允许我在我输入的显示器上显示文本。我在C中有一个中断表,我需要加载并希望能够使用内联汇编代替外部汇编语言模块。 我在寻找的是将指针传递给内联汇编的一种方法。 我试图内联的指令,需要一个存储器操作数是LIDT: 载荷将源操作数的值代入全局描述符表寄存器(GDTR)或中断描述符表寄存器(ID​​TR) 。源操作数指定包含全局描述符表(GDT)或中断描述符表(I

    0热度

    1回答

    我正在为自己的业余爱好操作系统编写C++内核。我在一个mac上工作,并编译了一个工作(直到现在)的交叉编译器出gcc版本4.8.2。 目前我有一个kernel.cpp文件,仅包含一个main()函数,当我编译并链接这个文件时,一切正常。但是,当我添加一个类,在不同的文件中,链接器开始抱怨: /opt/cross/gcc-i686-elf/lib/gcc/i686-elf/4.8.2/../../.

    1热度

    1回答

    我想知道是否有一种方法来输出窗口链接器的符号。我知道它会转储一个符号映射,但我想要一些我可以加载到调试器中的东西。 如果链接器不输出符号,我可以从现有的obj文件中获取它们吗?

    3热度

    1回答

    我有一个代码段位于boot.img文件的扇区37,在我的主引导记录中,我将这段代码加载到内存0x5678:0x1234,这是我的汇编代码: [BITS 16] ;Set code generation to 16 bit mode ORG 0x1234 ;set addressing to begin at 0x5678:0x1234 mov ax, cs mov ds, ax