# ExeBench：机器学习规模的可执行 C 函数数据集

> ExeBench 是数据集，而非反编译器。它从 GitHub 与 AnghaBench 中提取 C 函数，通过查找真实的头文件与定义或注入合成定义使其可编译，再依据函数签名生成输入／输出样例，并以 C++ 包装器运行每个函数。精确去重后，作者报告共有 4,485,817 个可编译函数和 687,843 个可执行函数，其中 124,612 个带有常量或恒等实现无法通过的丰富 IO；论文还说明每行数据附有 O0、Os 与 Ofast 下的 x86 和 ARM 汇编。SLaDe、LLM4Decompile 等反编译研究随后用它检验反编译函数能否正确重新执行。

- 作者：Jordi Armengol-Estapé; Jackson Woodruff; Alexander Brauckmann; José Wesley de Souza Magalhães; Michael F. P. O'Boyle
- 原标题：ExeBench: an ML-scale dataset of executable C functions
- 发表载体：ACM SIGPLAN MAPS 2022
- 发表状态：会议论文
- 出版／提交日期：2022 年 6 月 13 日
- 日期依据：ACM 文章页面与 ACM 提交的 Crossref 元数据均将出版日期列为 2022-06-13，这一天也是 MAPS ’22 研讨会的举办日。本条目采用出版方标明的出版日期，而非依据会议日程推定。
- DOI：10.1145/3520312.3534867
- 来源复核于：2026-10-18
- 收录于：2026-10-19
- 原始论文：<https://dl.acm.org/doi/10.1145/3520312.3534867>
- PDF：<https://dl.acm.org/doi/pdf/10.1145/3520312.3534867>
- 代码：<https://github.com/jordiae/exebench/tree/8b47d483c2e39ea40a304fbaac46e41a1a14272f>
- 项目：<https://huggingface.co/datasets/jordiae/exebench>
- BibTeX：<https://awesomerea.org/papers/citations/paper-exebench.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-exebench/>
- 记录 JSON：<https://awesomerea.org/papers/paper-exebench/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-exebench/index.md)

## 研究范围与局限

IO 依据函数签名生成，不考虑程序上下文：每个函数 10 对（合成定义使用三个随机种子，共 30 对），数组默认长度为 32；含指针与整数互转的函数生成成功率低于 5%，含 goto、标签及复杂控制流的函数成功率也较低，因此可执行函数整体比可编译函数更简单。合成 IO 基于注入的替代定义，而非函数的真实依赖生成；带有真实定义且具备丰富 IO 的函数仅有 4,464 个。有限的 IO 对只检验采样输入上的行为，并不证明语义等价；去重也只删除分词后完全相同的函数。运行带真实依赖的函数意味着执行不受信任的代码，作者使用了权限受限的容器。论文所用的 v1.00 原始数据仅可申请获取，公开的 v1.01 版本调整了数据划分（例如真实测试函数为 2,134 个，而非 2,232 个）。每个函数保留其来源仓库的许可证，ExeBench 新增内容采用 MIT 许可。

## 与本合集的关联

补充本节多篇反编译论文所依赖的可执行 C 函数基准，便于读者直接核查其构建方式、IO 局限与版本差异。

## 发表与复核说明

Crossref 与文章页面中的 ACM 元数据给出句首大写形式的标题，以及 Proceedings of the 6th ACM SIGPLAN International Symposium on Machine Programming 第 50–59 页；10 页的 PDF 将标题写作“ExeBench: An ML-Scale Dataset of Executable C Functions”。未找到 arXiv 版本。文章页面将全文标记为公开可读，PDF 中的 2022 年声明将出版权授予 ACM。所审阅的 2022-09-15 仓库提交没有 LICENSE 文件；其 README 说明每个 C 函数沿用来源仓库的许可证，IO 样例与包装器以 MIT 发布。仓库辅助代码使用 g++ -O0 将函数汇编与 C++ 包装器一同编译，并作为宿主机子进程直接运行，本身不提供沙箱。Hugging Face 修订版 093085f（2023-03-09）以 zstandard 压缩的 JSON Lines TAR 包托管 v1.01，数据卡元数据中没有许可证标签；v1.00 数据集 jordiae/exebench_legacy 需联系作者获取。

## 一手来源

1. <https://dl.acm.org/doi/10.1145/3520312.3534867>
2. <https://dl.acm.org/doi/pdf/10.1145/3520312.3534867>
3. <https://api.crossref.org/works/10.1145/3520312.3534867>
4. <https://github.com/jordiae/exebench/blob/8b47d483c2e39ea40a304fbaac46e41a1a14272f/README.md>
5. <https://github.com/jordiae/exebench/blob/8b47d483c2e39ea40a304fbaac46e41a1a14272f/exebench/__init__.py>
6. <https://github.com/jordiae/exebench/blob/8b47d483c2e39ea40a304fbaac46e41a1a14272f/examples/basic.py>
7. <https://huggingface.co/datasets/jordiae/exebench>
8. <https://huggingface.co/datasets/jordiae/exebench/blob/093085f8558cfd53de8e2c8f4ccc7b9e73dc22ae/README.md>

## 关于此条目

已依据论文及一手来源复核。请通过原始论文或 BibTeX 引用原作者。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
