2010-09-27 2 views
1

Я пишу VMM для архитектуры intel x86. Большая часть кода содержит сборку платформы x86 и код c. Может ли кто-нибудь помочь мне отладить код сборки, включая аппаратные структуры данных.как отладить сборку x86

+0

Есть ли какие-либо конкретные проблемы Вы сталкиваетесь? –

+0

@Nathan Fellman Также мой VMM работает на голом оборудовании и на вершине работает операционная система linux. – brett

ответ

1

Если этот VMM должен работать на хосте Windows, вы должны иметь возможность отлаживать сборку с помощью Visual Studio.

Если ваша проблема в том, что вы не знакомы с необходимыми аппаратными структурами, такими как VMCS, GDT, LDT, IDT, TSS и т. Д., То я предлагаю вам потратить время на ознакомление с IA32, особенно Software Developer's Guide , Это длинное чтение со многими подробностями, но я не вижу, как вы можете написать VMM без него.

+1

На самом деле проблема заключается в отладке инструкций x86. в настоящее время я занимаюсь проверкой инструкций eax, ebx, ecx etc и их печатью. Есть ли лучший способ отладки этого? – brett

+0

Лучше в каком отношении? У вас нет отладчика, который может отлаживать ваш код или что? –

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 
Смежные вопросы