Нужно прокомментировать строку исходного кода Qemu - PullRequest
2 голосов
/ 17 марта 2011

В исходном коде Qemu есть определение для блока перевода (cpu-exec.c)

/ qemu-0.14.0 / cpu-exec.c

Строка 127 говорит

статический TranslationBlock * tb_find_slow (target_ulong pc, target_ulong cs_base, uint64_t flags)

что это значит?

1 Ответ

5 голосов
/ 17 марта 2011

Это не определение для блока перевода, это функция с именем tb_find_slow(), которая возвращает указатель на блок перевода. Структура блока перевода определена в exec-all.h.

Что касается того, что они есть, эта страница имеет краткое описание:

QEMU переводит собственные инструкции в «микрооперации» и создает их как «блоки перевода». Когда происходит выполнение, первое, что происходит, - это поиск, чтобы найти блок перевода, который уже был создан.

Другими словами, это своего рода компилятор, работающий точно по времени.

Есть функция tb_find_fast(), которая использует хэш, основанный на бите состояния процессора (счетчик программ, селектор кода и флаги), который должен быть уникальным для каждого блока перевода. Если этот хэш не работает (результирующий блок перевода имеет другой PC / CS / flags), то он возвращается к медленному методу, который является последовательным сканированием списка блоков перевода.

...