為了熟悉使用qemu和gdb進行的除錯工作,我們進行如下的小練習:
從cpu加電後執行的第一條指令開始,單步跟蹤bios的執行。
在初始化位置0x7c00設定實位址斷點,測試斷點正常。
從0x7c00開始跟蹤**執行,將單步跟蹤反彙編得到的**與bootasm.s和bootblock.asm進行比較。
自己找乙個bootloader或核心中的**位置,設定斷點並進行測試
反彙編的**與bootblock.asm基本相同,而與bootasm.s的差別在於:lab1 練習三1.反彙編的**中的指令不帶指示長度的字尾,而bootasm.s的指令則有帶指示長度的字尾。
2.反彙編的**中的通用暫存器是32位(帶有e字首),而bootasm.s的**中的通用暫存器是16位(不帶e字首)。
ucore作業系統 lab1 練習四 實驗報告
1.bootloader如何讀取硬碟扇區的?2.bootloader是如何載入elf格式的os?讀乙個扇區的大致流程 1.等待磁碟準備好 2.發出讀取扇區的命令 3.等待磁碟準備好 4.把磁碟扇區資料讀到指定記憶體 實際操作中,需要知道怎樣與硬碟互動。所有的io操作是通過cpu訪問硬碟的io位址暫存...
ucore作業系統lab1實驗準備知識
虛擬環境 virtualbox 操作環境 utunbu 10.04 編譯環境 gcc 4.6.x 作業系統是乙個軟體,也需要通過某種機制載入並執行它。在這裡我們將通過另外乙個更加簡單的軟體 bootloader來完成這些工作。為此,我們需要完成乙個能夠切換到x86的保護模式並顯示字元的bootloa...
基於ucore的作業系統實驗lab1
練習1.1 1 先編譯鏈結生成kernel檔案 2 再編譯鏈結生成bootblock檔案 3 生成ucore.imgsign.c生成bootblock 1.2 檢視sign.c可以發現關鍵在於bootblock.out小於510bytes,且 buf 510 0x55 buf 511 0xaa 練習...