Нужно прокомментировать строку исходного кода QEMU

StackOverflow https://stackoverflow.com/questions/5335984

  •  26-10-2019
  •  | 
  •  

Вопрос

Существует определение для блока перевода в исходном коде QEMU (CPU-Exec.c)

/qemu-0.14.0/cpu-exec.c

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

Static TranslationBlock *TB_FIND_SLOW (TARGET_ULONG PC, TARGET_ULONG CS_BASE, UINT64_T FLAGS)

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

Это было полезно?

Решение

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

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

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

Другими словами, это своего рода компилятор.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top