一步步编写操作系统 20 x86虚拟bochs一般用法 上
bochs一般用法
bochs是一個開源x86 虛擬機軟件。在它的實現中定義了各種數據結構來模擬硬件,用軟件模擬硬件缺點是速度比較慢,畢竟全是軟件來模擬,您想,虛擬機還要在軟件中模擬各種中斷,能不慢嗎。不過它的功能非常強大,咱們應該感激bochs開發人員所做的貢獻,真的不能抱怨,有的用就不錯了是不^-^。其優點是可移植性強,原則上只要gcc支持某個平臺,這個平臺上就可以有bochs,從而保證了bochs在各平臺上的暢通無阻。由于它是虛擬機,所以支持硬件級別上的調試。
bochs的硬件調試體現在:
這種在硬件級別上的調試給我們提供了更大的靈活性,以后您會發現,這種硬件調試有時候會幫我們大忙。
好在bochs的調試風格是參照gdb來設計的,這對于習慣gdb調試的同學無疑減少了學習成本,不熟悉gdb調試器的同學也不必感到沮喪,我們常用的調試命令并不多,而且bochs的調試方法做得很人性化,發揮一下想像力也能摸索個所以然來。本書中使用的bochs版本是2.6.2,以下就此版本對bochs的使用做大致介紹。
閑話少說,咱們先進入bochs,看看大概有哪些內容。如圖
第一行ls命令后,顯示的是我安裝的bochs下的文件,bin和share這兩個目錄是bochs安裝時創建的,bochs.out是bochs運行過程中的日志文件,它是在配置文件中指定的,而在本例中,bochs的配置文件是bochsrc.disk。hd60M.img是用bin/bximage命令創建出來的虛擬硬盤,它也需要在bochsrc.disk中指定后才能使用。
第二行是啟動bochs。由于我們的配置文件并不是這三個標準名稱:.bochsrc、bochsrc、bochsrc.txt,所以我們需要用-f來指定我們的配置在哪里。其實用-f來指定是有好處的,這樣我們清晰的知道哪個才是我們的配置。
如圖3-16,進入bochs后,我們要確定下一步做什么,由于bochs已經將選項[6]做為默認的行為,這里直接回車就好了
像很多提供控制臺的軟件一樣,直接鍵入help會顯示幫助信息。進入bochs后,鍵入命令help后回車,看看bochs給我們準備了什么禮物。Help命令的輸出如圖:
根據第二行的提示,“help+命令”,可以顯示命令的簡短描述信息。那咱們就試一下。
在“cpu and memory contents”類中,有x、xp命令。這兩個命令是用來查看內存的,它們的區別是,x命令后接線性地址,xp命令是后接physical物理地址。在目前的實模式中,只能通過物理地址來查看內存,先看看xp命令是怎么用的,一會咱們用xp命令來做個測試。鍵入help xp回車,如圖
說明一下,bochs中用到的“字”并不是2字節,而是4字節。在圖3-17的倒數第4行,提示用b,h,w,g來選擇一個“顯示單元”的大小。如b是指一字節。h是指半個字,2個字節。w是指一個字,4個字節。g是指雙字,8字節。用xp或x指令查看內容是以“顯示單元”為單位,不是以字節。所以如果不指定數據單位大小,默認是以4字節為單位來顯示。如xp 0x7c00,將顯示從0x7c00開始的4個字節。
bochs中支持8進制,10進制,16進制的數字。8進制按照以0開頭的寫法即可,10進制自然不用多說,對于16進制卻有點限制,只支持0x前綴的形式,不支持h后綴的形式。如:
8進制:011
10進制:11
16進制:0x11
在咱們調試過程中最常用的還是16進制,它的每一位直接和字節中的每4位對應,觀察起來還是較方便一些。
繼續看xp指令“xp /nuf <addr>”,nuf是指一個數字序列,這是三個參數,n用來分別指定要顯示的“顯示單元”數,u指“顯示單元”大小,f是指要用哪種進制顯示。最終要顯示幾個字節,是以“顯示單元大小u*顯示單元個數n”來決定的。addr可以是以上三種進制的數字。即使不明白,看著有點暈也沒有關系,后面我們還會對此命令繼說。
圖中嘗試了用b和w來顯示內存,大家可以看出,指定了顯示單元后,以后的輸出就以此顯示單元為準,不會自動恢復為默認的4字節。
此處的0x7c00是空值0,這是因為MBR還沒有被加載到此地址,MBR是由bios來加載的,bios目前還沒有運行呢。
先到這里,【再續】
總結
以上是生活随笔為你收集整理的一步步编写操作系统 20 x86虚拟bochs一般用法 上的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网上申请信用卡可靠吗
- 下一篇: 只要身份证就可以办信用卡吗