2010-09-27 98 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