Qemu源代码(cpu-exec.c)中有一个Translation Block的定义
第127行说
static TranslationBlock * tb_find_slow(target_ulong pc, target_ulong cs_base, uint64_t flags)
这是什么意思?答案 0 :(得分:5)
这不是翻译块的定义,这是一个名为tb_find_slow()
的函数,它返回指向翻译块的指针。翻译块结构在exec-all.h
中定义。
至于它们是什么,this page有一个简洁的描述:
QEMU将原生指令转换为“微操作”并将其构建为“翻译块”。执行时,首先发生的事情之一是进行查找以查找已创建的翻译块。
换句话说,它是一种即时编译器。
有一个tb_find_fast()
函数,它使用基于CPU状态(程序计数器,代码选择器和标志)的散列,这对于每个转换块应该是唯一的。如果该哈希不起作用(结果转换块具有不同的PC / CS /标志),则它将恢复为慢速方法,即对转换块列表的顺序扫描。