osdev

    0熱度

    1回答

    我有一個非常簡單的問題。我無法自己找到答案,因爲我沒有任何環境來測試它。 如果我在頁面邊緣訪問4個字節,會發生什麼? mov eax, dword [0x100000+4095] 當我有權訪問0x101000的頁面時,當我不知道什麼時,上三個字節是什麼? 請幫忙。

    0熱度

    2回答

    這是我從 `[ORG 0x00] [BITS 16] SECTION .text jmp 0x07c0:START ; set CS(segment register) to 0x07C0 and jump to START label. TOTALSECTORCOUNT: dw 0x02 KERNEL32SECTORCOUNT: dw 0x02 STA

    1熱度

    1回答

    我需要一些幫助瞭解堆棧寄存器如何在x86彙編中工作。下面的代碼片段來自我正在學習的引導加載程序。 打印功能需要三個「參數」。由於我推動所有三個堆棧,我預計sp在0xfff9。 bp在打印功能中一次佔用相同的地址。 我該怎麼做[bp+4]而不是[bp+2]?既然不是我在0xfffd,0xfffb和0xfff9位置推送的變量?然後,當我從打印功能返回時,我添加add sp, 6在打印之前將sp恢復到同

    3熱度

    2回答

    所以我四天後就撞上了牆。我正在使用OSDev tut,並且搜索了兩天的高和低。我已經嘗試了一切。首先,我意識到愚蠢的我正在嘗試64編譯,這就是爲什麼我得到了「..relocation被截斷爲適合:rva32對..」。我轉到了Cygwin 32,現在我無法在我的內核中看到main。 很抱歉,如果這是愚蠢的,我想這個在課間工作,我燒 boot.asm與>>> NASM -f精靈boot.asm -o

    0熱度

    2回答

    我正試圖在我爲我的論文寫的一個小內核上移植liballoc。 爲了做到這一點,我需要一個函數來掃描一系列地址來查找空閒(和使用)的頁面。 我寫道,從掃描和地址(應該是頁表一致),並打印如果一個網頁是免費的或使用該功能: uint32_t check_pages(uint32_t startAddr,uint32_t length){ pdirectory* dir = vmm_get_d

    0熱度

    1回答

    我正在爲學習和探索目的編寫一個新的操作系統。我希望能夠掃描機器的連接設備(網絡,鍵盤,硬盤驅動器,以及您有什麼)。這將作爲安裝適當驅動程序的第一步。 我一直在互聯網上搜索一段時間,但沒有任何幫助。

    -1熱度

    2回答

    裝好吧,我已經撕裂了剩餘的頭髮我有這個問題... 基本上,我正在試圖建立一個非常簡單的愛好OS。操作系統將運行在X86平臺上,不使用FAT12軟盤。在我的機器上測試它之前,我創建了一個磁盤映像用Bochs 2.6.2進行測試。與往常一樣,我將引導程序放到磁盤映像的引導扇區上,然後將內核映像(KERNEL.SYS)添加爲常規FAT12文件。 引導加載程序的目的是要找到KERNEL.SYS,將其加載到

    0熱度

    1回答

    當從OSDev page上A20行所需的那麼多的鍵盤控制器的等待呼叫,用於使A20的代碼被給定爲:在對所述輸入緩衝器 enable_A20: cli call a20wait mov al,0xAD out 0x64,al call a20wait mov al,0xD0 out 0x64,al call

    7熱度

    1回答

    我正在研究一個小的x86內核。我正在訪問並嘗試讀取GRUB在多引導標題中提供的內存映射。我有一個Intel i3 cpu和4 GiB的RAM。這臺機器上運行時,我讀了下面的內存映射: --Base Address-- --Length-- --Type-- 0x0000000000000000 0x000000000009d000 0x1 0x000000000009d000 0

    2熱度

    2回答

    有沒有什麼地方(除了硬盤,軟盤等),我可以存儲幾個字節的信息,並在熱CPU復位後讀回它們? 我試着使用BIOS數據區(特別是:0x0040:0x00F0 - Inter-application communication area),但這個地區充滿了復位時零,所以我的信息丟失。 是否有其他地方在復位過程中未被清除?