zherczeg/sljit
GitHub: zherczeg/sljit
一个轻量级、跨平台的低级JIT编译器,用于将字节码转换为支持多种CPU架构的本地机器码。
Stars: 1079 | Forks: 97
# SLJIT
平台无关的低级 JIT 编译器
https://zherczeg.github.io/sljit/
## 目的
SLJIT 是一个低级、平台无关的 JIT 编译器,非常适合将字节码转换为机器码。
## 特性
- 支持多种目标架构:
- `x86` 32 / 64
- `ARM` 32 / 64
- `RISC-V` 32 / 64
- `s390x` 64
- `PowerPC` 32 / 64
- `LoongArch` 64
- `MIPS` 32 / 64
- 支持大量操作
- 自修改代码
- 尾调用
- 快速调用
- 字节序反转(大小端切换)
- 非对齐内存访问
- SIMD
- 原子操作
- 允许直接访问寄存器(整数和浮点)
- 支持为函数局部变量分配栈空间
- 支持一体化编译
- 允许将 SLJIT 的 API 完全隐藏,不对外暴露
- 允许将编译器序列化到字节缓冲区
- 适用于提前(AOT)编译
- 反序列化后可以恢复代码生成(部分 AOT 编译)
## 文档
主要文档来源是 [`sljitLir.h`](./sljit_src/sljitLir.h)。
更多文档可以在 [SLJIT 网站](https://zherczeg.github.io/sljit/) 以及 [`docs` 文件夹](./docs/)中找到。
## 联系方式
可以发起一个 [Issue](https://github.com/zherczeg/sljit/issues) 或发送电子邮件至 hzmester@freemail.hu。
## 许可证
SLJIT 采用 [Simplified BSD License](./LICENSE) 进行许可。
## 特别感谢
- Alexander Nasonov
- Carlo Marcelo Arenas Belón
- Christian Persch
- Daniel Richard G.
- Giuseppe D'Angelo
- H.J. Lu
- James Cowgill
- Jason Hood
- Jiong Wang (*TileGX 支持*)
- Marc Mutz
- Martin Storsjö
- Michael McConville
- Mingtao Zhou (*LoongArch 支持*)
- Walter Lee
- Wen Xichang
- YunQiang Su标签:AOT编译, DNS 反向解析, Hakrawler, JIT编译器, LLVM替代, LoongArch, MIPS, PCRE, PowerPC, RISC-V, s390x, SIMD, X86, 代码生成, 动态二进制翻译, 即时编译, 原子操作, 后端编译, 字节码翻译, 客户端加密, 寄存器分配, 尾调用, 嵌入式系统, 序列化, 底层编译器, 底层虚拟机, 提前编译, 机器码, 正则表达式引擎, 汇编器, 渗透测试工具, 生成式AI安全, 系统编程, 编译原理, 自修改代码, 虚拟机, 解释器, 运行时环境, 高性能计算