Czy można wykonać QEMU w celu wygenerowania swojego złożenia w składni Intela?

4

QEMU -d asm_in i -d asm_out opcje są przydatne do badania dynamicznie generowanego asmu utworzonego przez QEMU.

Niestety (dla mnie) domyślnie jest to składnia AT & amp; T. Czy istnieje opcja wyjścia w składni Intela?

BeeOnRope
źródło

Odpowiedzi:

3

Nie, QEMU nie udostępnia opcji konfiguracji do wyboru składni demontażu. (Używamy źródeł disassemblera binutils, więc kod do wypisywania składni Intela zamiast AT i T jest tam, ale nie podłączamy go do czegoś, co użytkownik może zmienić).

Peter Maydell
źródło
1

Dzięki Odpowiedź Petera Maydella wiemy, że deasembler QEMU jest oparty na binutils. Ale deasembler binutils faktycznie obsługuje składnię Intela, musimy tylko wiedzieć, co zmienić, aby go aktywować. Jeśli chcesz przekompilować QEMU, oto łatka, która wymusi bezwarunkową składnię Intela:

diff --git a/disas/i386.c b/disas/i386.c
index f1e376c..4493115 100644
--- a/disas/i386.c
+++ b/disas/i386.c
@@ -3682,7 +3682,7 @@ static char scale_char;
 int
 print_insn_i386 (bfd_vma pc, disassemble_info *info)
 {
-  intel_syntax = -1;
+  intel_syntax = 1;

   return print_insn (pc, info);
 }
Ruslan
źródło
W przypadku rejestrowania in_asm należy dokonać podobnej zmiany w funkcji disas () w disas.c, a w celu dezasemblacji za pomocą zmiany monitora QEMU monitor_disas ().
Peter Maydell
@PeterMaydell faktycznie zdałem sobie sprawę, że muszę tylko zmienić jedno miejsce, aby składnia Intela miała zastosowanie do wszystkich przypadków (przynajmniej in_asm i out_asm są teraz poprawne, nie wiem jak przetestować monitor QEMu).
Ruslan