我正在尝试分析 QEMU tcg IR 代码
我看到这篇文章讨论了 QEMU 代码流程。根据该图,翻译发生在 target-xxx/translate.c,这就是 QEMU 将代码从源(或前端)翻译为 TCG IR 的地方。然后进一步在 tcg/xxx/tcg-target.c。
这个过程可以总结如下(至少根据我的理解) - 假设我们有x86一个前端和powerpc (ppc64abi32)一个后端,那么 -
x86--> TCG IR-->ppc64abi32
我想分析一下这段TCG IR代码。有什么方法可以生成此代码(这可能不相关,但例如,我们可以使用带有 clang 的标志 -S 生成 LLVM IR 代码)?
我自己做了一些研究,发现struct TranslationBlock(在文件 /include/exec/exec-all.h 中)这与 tcg IR 代码有关(所以,我尝试打印一些结构变量,但我不确定是否我正朝着正确的方向前进)。我还阅读了微型代码生成器自述文件,但找不到生成相关信息。
查看 -d 选项,它可以启用各种内容的调试打印。“-d op”跟踪 TCG 操作。您可能还想使用 in_asm 和 out_asm 跟踪输入和输出 asm。将跟踪转储到文件的 -D 文件选项也很有帮助,因为跟踪通常很大。