bochs就像一台真機一樣,處理器在加電之後,要開始取指令並執行指令。
jmpf f000:e05b ;轉移目標位置rom-bios
如圖在左側顯示了該指令所在的物理記憶體位址0x0000fffffff0。
但為什麼是0x0000fffffff0?因為和8086不同,現代處理器在加電時,段暫存器cs的內容為,0xf000,指令指標暫存器ip的內容為0xfff0,這就使得處理器位址線的低20位同樣是0xffff0。在剛啟動時,處理器將其餘(高位部分)的位址線強制為高電平。因為當前bochs虛擬機器的位址線是32根,所以,初始發出的物理記憶體位址就是0x0000fffffff0了。
bochs執行一條指令,然後停下來,同時顯示下一條將要執行地指令。
注意,實體地址變了。現代的x86處理器在加電後,所有高階的位址線都被強制為高電平,直至遇到並執行了第乙個段間轉移指令。
單步執行有乙個缺點,就是會陷入同一條指令地多次重複執行裡,這時用n命令,bochs將自動完成迴圈過程,並在迴圈體外地下一條指令前停住。
反彙編地意思是根據機器指令**生成可讀地組合語言指令,正好與彙編過程相反。u命令可以使用兩個引數,第乙個引數是跟在/後面地數字,指定返彙編出多少條指令;第二條引數用於指定乙個記憶體位址,bochs從這裡開始反彙編操作。
就是事先設定乙個(物理)記憶體位址,當處理器執行到這個位址時,就自動停下來了。然後再輸入命令c(continue)是持續執行的意思,該命令要求處理器不間斷地持續執行指令。
顯示通用暫存器地內容
顯示段暫存器地內容
即,顯示指定物理記憶體位址處地內容。xp命令每次只顯示乙個雙子。要是顯示多個雙字,需要用 / 附加乙個資料量。然後,還應當指定乙個物理記憶體位址。
用於顯示標誌暫存器地狀態,如果標誌暫存器名稱是小寫,說明該標誌為0;否者該標誌狀態為1。
退出bochs除錯過程
Bochs 除錯技術
bochs 除錯技術 freos hobby os frank wang 中國核芯網 對於任何想嘗試寫自己的作業系統的朋友來說,我都要向你推薦bochs。這個模擬器最大的好處就是可以單步除錯。在沒了解它之間,我在寫freos幾乎是瞎子,進展十分緩慢,特別是在你沒有完成顯示器驅動之前,你可以想象,看不...
bochs除錯技術
bochs除錯技術 除錯模式將出現下列命令列 bochs 1 下面初步說明一下每條指令的用法 執行控制命令 c 繼續執行,遇到斷點將停止 stepi count 執行count條指令,預設為1條 si count stepi的縮寫 step count 執行count條指令,預設為1條 s coun...
bochs除錯入門
bochs除錯入門 安裝sudo apt get install vgabios bochs bochs x bximage 建立軟盤 bximage fd一直回車,將在當前目錄下會建立乙個預設大小為1.44m的軟盤名為a.img。dd if boot of a.img bs 512 count 1...