7.7.8. 源码结构

主要文件

  • accel/tcg
    • cpu-exec.c
      • 寻找下一个二进制翻译代码块

      • 如果没有找到就请求得到下一个代码块,并且操作生成的代码块

    • translate-all.c
      • cpu_gen_code 函数,初始化真正代码生成

  • hw
    • 硬件目录

  • 主目录
    • vl.c
      • main 函数

      • main_loop 函数,条件判断

      • 最主要的模拟循环,虚拟机环境初始化,和 CPU 的执行

    • cpu-exec.c
      • cpu_exec 函数,主要的执行循环

      • 寻找下一个二进制翻译代码块

      • 如果没有找到就请求得到下一个代码块,并且操作生成的代码块

    • cpus.c
      • qemu_main_loop_start 函数,分时运行 CPU 核

    • exec-all.c
      • struct TranslationBlock
        • TB(二进制翻译代码块) 结构体

    • exec.c

  • target
    • 不同架构的对应目录

    • 将客户CPU架构的TBs转化成TCG中间代码

    • TCG前的前端

    • target/<arch>/translate.c
      • 将 guest 代码翻译成不同架构的 TCG 操作码

    • target/<arch>/cpu.h
      • CPU 状态结构体

  • tcg
    • tcg/tcg.c
      • 主要的 TCG 代码

    • tcg/<arch>/tcg-target.c
      • 将 TCG 代码转化生成主机代码

    • TCG前的后端