osdev

    1熱度

    1回答

    我目前正在開發一個內核,並在執行系統調用時遇到一個神祕的問題。我寫這樣的0x80th中斷處理程序: sys_call_s: pushad call sys_call popad iret 「sys_call」是執行實際工作的C函數的名稱。問題是:執行「int 0x80」的下一條指令時出現三重故障。例如,我在執行下面的程序的第三行時遇到了錯誤,最後boch

    1熱度

    1回答

    我想用Grub2啓動定製內核。我用老(蠐螬1)多重頭: .set flags, 0x0 .set magic, 0x1badb002 .set checksum, -(magic + flags) .align 4 .long magic .long flags .long checksum ... movl %eax, magic 但它不與GRUB2工作,所以我已經搜查

    5熱度

    1回答

    我從實模式切換到保護模式之前,許多許多的操作系統(以及一些引導程序),它們都禁止中斷(cli)看到。爲什麼我們需要這樣做?

    -1熱度

    1回答

    我正在遵循編寫您自己的操作系統的指南。它從編寫一個2階段引導程序開始,第一個引導加載程序在第二階段加載。在我指南中,他們讓我使用FAT12文件系統作爲軟盤映像,所以我從根目錄表讀取以查看是否該文件存在,然後去到FAT來獲取文件簇....等等,等等 我的問題是,我的代碼是沒有找到根目錄表中的文件,但我不能找出原因。有人可以在這裏指出我正確的方向嗎? 這是我的引導程序代碼:https://friend

    -3熱度

    2回答

    multiboot header是什麼意思?關於如何製作操作系統,請通過tutorials。我遇到這個詞。

    0熱度

    1回答

    出於某種原因,我想在之後運行我的代碼,窗口的頁面錯誤處理程序已執行以確保頁面現在位於物理內存中。我使用下面的代碼作爲新的int 0E處理程序: pushfd // eflags push cs call __Next __Next: add dword ptr [esp], 0x0E // eip push dword ptr [esp +

    1熱度

    2回答

    我正在嘗試開發一個簡單的操作系統。我之前做過一些彙編程序,不得不使用INT 10h來在屏幕上顯示字符。我瞭解UEFI支持傳統BIOS,並且仍然可以使用INT 10h服務。但是,如果我選擇構建純粹的UEFI可引導操作系統,我應該避免使用INT 10h?或者我以錯誤的方式看待事情? 換句話說,鑽出的printf到stdout(屏幕)最終調用BIOS INT 10h?或者是問題 - 「基於INT 10h

    4熱度

    3回答

    有人可以啓發我CAS工具如http://www.ptlsim.org/如何工作嗎?如果沒有信息,每個指令使用多少個週期,CPU分支預測邏輯是否已知,他們如何實現週期精度?還是一切都可用於NDA?我想他們可能是非常準確的緩存被擊中或錯過(也許我錯了,但我認爲這是更容易預測內部算法),但沒有知識如何實現流水線和superscalarity我很困惑如何使模擬週期準確。 因此,理論上可以在基於x86的硬件

    23熱度

    1回答

    我正在從OSDev.org那裏學習一點操作系統開發。我有一個內核,我試圖使用qemu在GRUB Legacy(0.97)中啓動。但是,當我輸入kernel 200+9,我得到的消息 [Multiboot-elf, <0x100000:0x80:0x4008>(bad), entry=0x10000c] 這是我所期待除外(壞)的一部分。如果我現在鍵入boot GRUB就掛起了。 我認爲數字0x1

    1熱度

    1回答

    背景信息 我正在開發一個簡單的DOS操作系統。所以我不打算很快進入保護模式。操作系統將以彙編形式編寫;順便說一句,NASM語法。引導扇區應該將引導扇區保存在硬盤的第一個扇區上,並在第二扇區上保存OS的代碼。以便它可以從硬盤啓動,而不是從CD映像啓動。 The Issue 問題是引導扇區似乎在硬盤上正確保存了一切。但是當我重新啓動VMware Player時,彈出虛擬光盤。它啓動一個背景綠色(圖1.