A generic and open source machine emulator and virtualizer

いろんなCPUアーキテクチャに対応しているエミュレータ

QEMU Monitor

メモリを覗いたりできる
https://qemu-project.gitlab.io/qemu/system/monitor.html
https://wiki.osdev.org/QEMU_Monitor

  • info registers → レジスタを覗く
  • (print|p) expr → exprの評価? p 0xf0+10 で 0xfa が出力される
  • x/fmt addr → 仮想メモリを覗く
  • xp/fmt addr → 物理メモリを覗く

GDBをアタッチしたほうが良いという説もある

fmt

count (数字) + format + size からなる
format: x (hex), d (signed decimal), u (unsigned decimal), o (octal), c (char), i (asm instruction)
size: b (8 bits), h (16 bits), w (32 bits), g (64 bits)

たとえば0x10から0x18までの6バイトを8bit単位・16進数で見たかったら x /8xb 0x10

(qemu) x /8xb 0x10
0000000000000010: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

ショートカット

-nographic オプションを渡して起動しているとき、 Ctrl+A を押してから何らかのキーを入れると、諸々の操作が出来る
https://www.qemu.org/docs/master/system/mux-chardev.html

  • Ctrl+A x → 終了
  • Ctrl+A c → OSと Qemu Monitor の切り替え