LATX(Loongson Architecture Translator for x86)即龙芯 x86 架构转译器,是 一个面向 LoongArch 架构的高性能用户级二进制翻译器,用于在龙芯(龙架构)系统上高效地运行 32/64 位 x86 应用程序。
LATX 基于 QEMU 6 版本开发并进行了深度优化,性能相比原生 QEMU 有显著提升。 项目利用龙架构的各指令集扩展(如向量扩展和二进制转译指令集)对 X86 指令集 进行了高效翻译,并采用了AOT(Ahead-of-Time )预编译、运行时库直通等关键优化技术,其中库直通优化思想借鉴及引用了 box64 项目的部分源码。
LATX 仓库的目录结构
lat
├── ...
├── latxbuild/ # 编译脚本
├── target/
│ └── i386/
│ └── latx/
│ └── context/ # 库直通相关
│ └── convert.py # 生成 LA 指令函数模板
│ └── ir1/
│ └── ir1.c # IR1:x86 指令 IR 表示
│ └── ir2/
│ └── ir2.c # IR2:LA 指令 IR 表示
│ └── ir2-relocate.c # label 处理等逻辑
│ └── la-append.c # 项目编译后由 convert.py 生成
│ └── ir2-assemble.c
│ └── latx-options.c # LATX 功能选项设置
│ └── optimization/
│ └── flag-reduction.c # TB 内 eflags 消除优化
│ └── hbr.c # 寄存器高位计算优化
│ └── imm-cache.c # 立即数加载优化
│ └── insts-pattern.c # 语义级指令组合优化翻译
│ └── ir1-optimization.c # IR1 层面优化扫描函数
│ └── ir2-optimization.c # IR2 层面指令调度函数
│ └── tu.c # TU 翻译单元优化
│ └── ...
│ └── sbt/ # AOT 相关
│ └── translator/ # 翻译函数
│ └── tr-logic.c # 逻辑运算指令翻译函数
│ └── tr-arith.c # 算术运算指令翻译函数
│ └── ...
│ └── wrapper/ # 库直通相关
│ └── ...
├── ...
└── README.rst # 本文档
评论