我可以检查 Qemu tcg ir 代码吗?如果是这样怎么办?

Can I examine Qemu tcg ir code? If so how?

我正在尝试分析 QEMU tcg IR 代码

我看到 this post 讨论 QEMU 代码流程。根据该图,转换发生在 target-xxx/translate.c,这是 QEMU 将代码从源(或前端)转换为 TCG IR 的地方。然后进一步 tcg/xxx/tcg-target.c.

这个过程可以总结如下(至少根据我的理解)—— 比如说,我们有 x86 作为前端,powerpc (ppc64abi32) 作为后端,那么 -

x86 --> TCG IR --> ppc64abi32

我想分析这段 TCG IR 代码。有什么方法可以生成此代码(这可能不相关,但例如,我们可以使用标志 -S 和 clang 生成 LLVM IR 代码)?

我自己做了一些研究,发现 struct TranslationBlock(在文件 /include/exec/exec-all.h 中)与 tcg IR 代码有关(所以,我尝试打印一些结构变量,但我不确定我是否朝着正确的方向前进)。我也看过微型代码生成器readme,但找不到生成相关信息。

查看 -d 选项,它可以启用各种内容的调试打印。 “-d op”跟踪 TCG 操作。您可能还希望使用 in_asm 和 out_asm 跟踪输入和输出 asm。将跟踪转储到文件的 -D 文件选项也很有用,因为跟踪通常非常大。