Frage

Es gibt eine Definition für den Übersetzungsblock im QEMU-Quellcode (cpu-exec.c)

/qemu-0.14.0/cpu-exec.c

Zeile 127 sagt

statischer translationBlock *tb_find_slow (target_ulong pc, target_ulong cs_base, uint64_t Flags)

was bedeutet das?

War es hilfreich?

Lösung

Das ist keine Definition für einen Übersetzungsblock, das ist eine Funktion genannt tb_find_slow() was einen Zeiger auf einen Übersetzungsblock zurückgibt. Die Übersetzungsblockstruktur ist in definiert in exec-all.h.

Was sie sind, diese Seite hat eine prägnante Beschreibung:

QEMU übersetzt native Anweisungen in "Mikrooperationen" und erstellt sie als "Übersetzungsblöcke". Wenn die Ausführung auftritt, ist eines der ersten Dinge, die passieren, dass eine Suche nach einem bereits erstellten Übersetzungsblock vorgenommen wird.

Mit anderen Worten, es ist eine Art Just-in-Time-Compiler.

Da ist ein tb_find_fast() Funktion, die einen Hash verwendet, der auf einem Bit CPU -Status (Programmzähler, Code -Selektor und Flags) basiert und für jeden Übersetzungsblock eindeutig sein sollte. Wenn dieser Hash nicht funktioniert (der resultierende Übersetzungsblock hat einen anderen PC/CS/-flags), weist er auf die langsame Methode zurück, bei der es sich um eine sequentielle Scan der Übersetzungsblockliste handelt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top