2

Qemu Source Code(cpu-exec.c)中有Translation Block的定义

/qemu-0.14.0/cpu-exec.c

第 127 行说

静态 TranslationBlock *tb_find_slow(target_ulong pc,target_ulong cs_base,uint64_t 标志)

这是什么意思?

4

1 回答 1

5

这不是翻译块的定义,而是一个调用的函数tb_find_slow(),它返回指向翻译块的指针。翻译块结构定义在exec-all.h.

至于它们是什么,这个页面有一个简洁的描述:

QEMU 将本机指令翻译成“微操作”并将它们构建为“翻译块”。当执行发生时,首先发生的事情之一是进行查找以找到已经创建的翻译块。

换句话说,它是一种即时编译器。

有一个tb_find_fast()函数使用基于 CPU 状态位(程序计数器、代码选择器和标志)的哈希值,每个翻译块应该是唯一的。如果该散列不起作用(生成的翻译块具有不同的 PC/CS/标志),则它会恢复为慢速方法,即对翻译块列表进行顺序扫描。

于 2011-03-17T07:21:50.093 回答