Question

Il y a une définition pour bloquer la traduction dans Qemu code source (cpu-exec.c)

/qemu-0.14.0/cpu-exec.c

Ligne 127 dit

TranslationBlock statique * tb_find_slow (target_ulong pc, target_ulong cs_base, drapeaux uint64_t)

qu'est-ce que cela signifie?

Était-ce utile?

La solution

Ce n'est pas une définition pour un bloc de traduction, qui est une fonction appelée tb_find_slow() qui renvoie un pointeur sur un bloc de traduction. La structure du bloc de translation est définie en exec-all.h.

Quant à ce qu'ils sont, cette page a une description succincte:

QEMU se traduit par des instructions natives dans « micro-opérations » et les construit comme « blocs de traduction ». Lorsque l'exécution se produit, l'une des premières choses qui se passent est qu'une recherche est effectuée pour trouver un bloc de traduction qui a déjà été créé.

En d'autres termes, il est en quelque sorte d'un compilateur juste à temps.

Il y a une fonction tb_find_fast() qui utilise un hachage basé sur un peu d'état CPU (compteur de programme, sélecteur de code et des drapeaux) qui doit être unique pour chaque bloc de traduction. Si ce hachage ne fonctionne pas (le bloc de traduction résultant a un autre PC / CS / drapeaux), il revient à la méthode lente, qui est une analyse séquentielle de la liste des blocs de traduction.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top