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