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