vak: (Default)
[personal profile] vak
QEMU известен как эмулятор компьютеров с различной архитектурой: i386, ARM, MIPS, PowerPC, SPARC. Его ценят за то, что он очень "быстрый". На мало кто знает, что суть QEMU в другом: это "бинарный транслятор". Он делит бинарный код эмулируемой программы на линейные участки - "блоки", разделённые командами переходов. Каждый блок транслируется в систему команд хост-процессора. Затем полученный код выполняется.

Для архитектуры MIPS эмулятор QEMU поддерживает четыре платформы: MIPS Jazz, MIPS Malta, MIPSsim и MIPS 4k (коротенький обзор здесь). Две первые - реальные компьютеры, две вторые - виртуальные системы. Я сделал простейший пример типа "Hello World" для запуска на платформе MIPS 4k. Исходники, бинарники и скрипты запуска можно взять здесь. Запуск эмулятора делается командой "qemu-system-mipsel -M mips -L . -bios hello.bin".

Дизассемблированный код программы находится в файле hello.dis. В файле протокола qemu.log можно посмотреть, как QEMU делит код на блоки и транслирует в команды i386. Метками "IN:" помечены блоки кода MIPS, метками "OP:" - операции виртуальной машины, полученные из исходного кода. Метки "OUT:" - готовый к выполнению код i386.

Всего в программе было 113 команд MIPS. После трансляции образовалось 894 команды i386. Делаем грубую оценку: при запуске QEMU на Pentium 3 ГГц скорость выполнения будет соответствовать процессору MIPS с частотой 3*113/894 = 380 МГц.

Date: 2010-09-19 15:29 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
OT: Как процесс идет? Когда мы тебя увидим?

Date: 2010-09-25 07:03 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
No news is good news or bad news?

Date: 2010-09-19 16:16 (UTC)
From: [identity profile] http://users.livejournal.com/_iga/
А как QEMU справляется с самомодифицирующимся кодом?

Date: 2010-09-20 06:19 (UTC)
From: [identity profile] dz.livejournal.com
Судя по тому, что поверх него работает всё (это эмулятор компьютера, на нём можно любую ОС поднять), он явно перегенерирует код в случае модификации.

Кстати, линуксовый kvm - это, насколько я понимаю, тоже QEMU.

Date: 2010-09-19 17:35 (UTC)
From: [identity profile] sir66.livejournal.com
Ты будешь 22го на мероприятии в Советской?

Date: 2010-09-19 18:33 (UTC)
From: [identity profile] sir66.livejournal.com
Типа юбилей домена su. Я вроде давал все твои контакты. У тебя телефон и мейл не менялись?

Date: 2010-09-23 09:24 (UTC)
From: [identity profile] tim-caper.livejournal.com
То есть примерно восемь раз.
Тебе для явововского JIT такие оценки не попадались?