Bochs調試指令


Bochs

  Bochs就像一台真機一樣,處理器在加電之后,要開始取指令並執行指令。
在這里插入圖片描述

jmpf f000:e05b	;轉移目標位置ROM-BIOS

  如圖在左側顯示了該指令所在的物理內存地址 0x0000fffffff0

  但為什么是0x0000fffffff0?因為和8086不同,現代處理器在加電時,段寄存器CS的內容為,0xF000,指令指針寄存器IP的內容為0xFFF0,這就使得處理器地址線的低20位同樣是0xFFFF0。在剛啟動時,處理器將其余(高位部分)的地址線強制為高電平。因為當前Bochs虛擬機的地址線是32根,所以,初始發出的物理內存地址就是0x0000fffffff0了。

單步執行命令s(stop)

  Bochs執行一條指令,然后停下來,同時顯示下一條將要執行地指令。
在這里插入圖片描述
  注意,物理地址變了。現代的x86處理器在加電后,所有高端的地址線都被強制為高電平,直至遇到並執行了第一個段間轉移指令。

n 指令

  單步執行有一個缺點,就是會陷入同一條指令地多次重復執行里,這時用n命令,Bochs將自動完成循環過程,並在循環體外地下一條指令前停住。
在這里插入圖片描述

反匯編命令u

  反匯編地意思是根據機器指令代碼生成可讀地匯編語言指令,正好與匯編過程相反。u 命令可以使用兩個參數,第一個參數是跟在 / 后面地數字,指定返匯編出多少條指令;第二條參數用於指定一個內存地址,Bochs從這里開始反匯編操作。
在這里插入圖片描述

斷點指令 b(break)

  就是事先設置一個(物理)內存地址,當處理器執行到這個地址時,就自動停下來了。然后再輸入命令 c(continue) 是持續執行的意思,該命令要求處理器不間斷地持續執行指令。
在這里插入圖片描述

r(register)

  顯示通用寄存器地內容
在這里插入圖片描述

sreg(segment register)

  顯示段寄存器地內容
在這里插入圖片描述

xp(eXamine memory at Physical address)

  即,顯示指定物理內存地址處地內容。xp命令每次只顯示一個雙子。要是顯示多個雙字,需要用 / 附加一個數據量。然后,還應當指定一個物理內存地址。
在這里插入圖片描述

info eflags

  用於顯示標志寄存器地狀態,如果標志寄存器名稱是小寫,說明該標志為0;否者該標志狀態為1。
在這里插入圖片描述

q(quit)

  退出Bochs調試過程
在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM