日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

一步步编写操作系统 20 x86虚拟bochs一般用法 上

發布時間:2023/12/10 windows 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一步步编写操作系统 20 x86虚拟bochs一般用法 上 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

bochs一般用法

bochs是一個開源x86 虛擬機軟件。在它的實現中定義了各種數據結構來模擬硬件,用軟件模擬硬件缺點是速度比較慢,畢竟全是軟件來模擬,您想,虛擬機還要在軟件中模擬各種中斷,能不慢嗎。不過它的功能非常強大,咱們應該感激bochs開發人員所做的貢獻,真的不能抱怨,有的用就不錯了是不^-^。其優點是可移植性強,原則上只要gcc支持某個平臺,這個平臺上就可以有bochs,從而保證了bochs在各平臺上的暢通無阻。由于它是虛擬機,所以支持硬件級別上的調試。

bochs的硬件調試體現在:

  • 1.調試時可以查看頁表、gdt、idt等數據結構
  • 2.可以查看棧中數據。
  • 3.可以反匯編任意內存。
  • 4.實模式、保護模式互相變換時提醒。
  • 5.中斷發生時提醒。
  • 這種在硬件級別上的調試給我們提供了更大的靈活性,以后您會發現,這種硬件調試有時候會幫我們大忙。

    好在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一般用法 上的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。