Star on GitHubStar1.1k stars

2024 · Conference paper

Self-Constructed Context Decompilation with Fined-grained Alignment Enhancement

Adds two techniques to LLM decompilation of function-level x86-64 GCC assembly into C. Self-Constructed Context Decompilation (sc²dec) recompiles a model’s first compilable output and uses the resulting assembly–source pair as an in-context example for a second attempt, without fine-tuning. Fine-grained Alignment Enhancement (FAE) fine-tunes llm4decompile-6.7b with LoRA on statement-level assembly–C alignments derived from DWARF debug information. Combining both, the authors report 52.41% average re-executability on Decompile-Eval, against 48.60% for the base model.

Scope and limitations

Results are function-level re-executability on Decompile-Eval: 164 HumanEval-derived C problems compiled at O0–O3 and checked by recompilation and HumanEval test cases. Passing these tests is not whole-program or all-input equivalence, and the paper does not evaluate real-world binaries, other architectures or readability. sc²dec helps only when the first output recompiles, so low re-compilability limits its gains; the authors report 1–2% lower results when context is built at a mismatched optimization level, and clang-built contexts scored slightly below GCC. FAE used 10,000 ExeBench functions limited to the standard C library, one training epoch and a single 6.7B base model; the authors did not validate it on larger datasets or models, and it slightly lowered the 1-shot result. GPT-4 and DeepSeek baselines are API snapshots that may not be reproducible.

Why it fits this collection

Adds recompilation feedback and debug-information alignment to end-to-end LLM decompilation, complementing LLM4Decompile and execution-checked decompilation benchmarks.

Publication and review details

Venue
Findings of EMNLP 2024
Status
Conference paper
Publication / posting date
November 2024
Date source
The official ACL Anthology citation gives November 2024. Crossref records only the year; the November 12–16 conference dates printed in the PDF are not treated as a publication day.
First arXiv submission
June 25, 2024
arXiv
2406.17233
Reviewed arXiv version
v2
DOI
10.18653/v1/2024.findings-emnlp.385

The title keeps the published spelling ‘Fined-grained’. The eight-author order follows the Anthology, PDF, Crossref and arXiv. arXiv v2 (2024-10-03) is labeled EMNLP 2024 Findings; v1 was submitted on 2024-06-25. The Anthology and Crossref give pages 6603–6614. The abstract’s ‘approximately 3.90%’ gain differs from the 3.81-point gap between Table 1’s 48.60% base result and 52.41%. At the 2025-02-18 commit, the repository declares MIT, although LICENSE.txt keeps template placeholders for year and holders. It provides an evaluation script and GCC Decompile-Eval data, and links a LoRA adapter for LLM4Binary/llm4decompile-6.7b-v1.5 and a training dataset on Hugging Face, both tagged MIT; the base model and ExeBench keep their own terms. Its README results table adds readability scores and the authors’ later ReF Decompile, and its FAE-only averages differ slightly from the paper (51.07% versus 50.88%). The evaluator uses local gcc and objdump and, with --compiler, sends code to the public Compiler Explorer API.

Sources reviewed

Reviewed against the paper and its primary sources. Cite the original authors using the linked paper or BibTeX.

Report an outdated entry Suggest a translation fix

Primary sources

  1. https://aclanthology.org/2024.findings-emnlp.385/
  2. https://aclanthology.org/2024.findings-emnlp.385.pdf
  3. https://aclanthology.org/2024.findings-emnlp.385.bib
  4. https://api.crossref.org/works/10.18653/v1/2024.findings-emnlp.385
  5. https://arxiv.org/abs/2406.17233
  6. README.md GitHub · AlongWY/sccdec · Revision 22745ea
  7. LICENSE.txt GitHub · AlongWY/sccdec · Revision 22745ea
  8. pyproject.toml GitHub · AlongWY/sccdec · Revision 22745ea
  9. src/sccdec/eval.py GitHub · AlongWY/sccdec · Revision 22745ea
  10. https://huggingface.co/ylfeng/sccdec-lora
  11. https://huggingface.co/datasets/ylfeng/sccdec-dataset
↑↓ move↵ open⌘↵ new tab