2010-09-27 97 views
1

我正在爲intel x86架構編寫VMM。大多數代碼包含x86平臺特定的彙編和c代碼。有人可以幫助我如何調試彙編代碼,請包括硬件數據結構。如何調試x86彙編

+0

有你遇到的任何具體問題? – 2010-09-27 07:29:41

+0

@Nathan Fellman另外我的VMM運行在裸機上,並且運行在Linux操作系統上。 – brett 2010-09-27 18:38:39

回答

1

如果此VMM應該在Windows主機上運行,​​則應該能夠使用Visual Studio調試程序集。

如果你的問題是你不熟悉VMCS,GDT,LDT,IDT,TSS等必要的硬件結構,那麼我建議你花點時間熟悉IA32,尤其是Software Developer's Guide 。這是一個長時間的閱讀與許多細節,但我沒有看到你如何編寫一個沒有它的VMM。

+1

其實問題是調試x86指令。目前我正在做的是檢查eax,ebx,ecx等指令並打印出來。有沒有更好的方法來調試呢? – brett 2010-09-27 16:41:16

+0

在哪方面更好?你沒有調試器可以調試你的代碼或什麼? – 2012-03-20 19:14:10

1

使用GDB進行調試適用於x86,如果需要,可以使用-tui開關打開TUI,如果它使事情變得更簡單。

我找到關於此主題的文檔是相當繁瑣的進行搜索,所以這裏是快速和骯髒的,讓你開始:

run        start program execution 
    break function-name    set breakpoint at function-name 
    clear function-name    clear breakpoint at function-name 
    continue       continue execution after breakpoint 
    si         next instruction, enter functions 
    ni         next instruction, doesn’t enter functions 
    disassemble      function-name display function’s code 
    info registers      display values in registers 
    display variable-name    show value of variable-name on breakpoint 
    print variable-name    show value of variable-name 
     p $register      or the value of register 
     p/x, p/d, p/c, p/f    … as hex, signed int, char, float 
    x address       examine memory at address 
    x &variable-name     examine value of variable-name