This document discusses ESIL, an intermediate language used in the reverse engineering tool radare2. It begins by providing context on intermediate languages generally and compares ESIL to other existing intermediate languages. Some key points:
- ESIL stands for Evaluable Strings Intermediate Language and is based on reverse polish notation for speed. It is designed for evaluation and emulation.
- ESIL aims to support a wide range of architectures with infinite memory and registers. It allows external function calls and custom operations.
- Radare2 uses ESIL for tasks like analysis, decompilation, and emulation. The radeco decompiler lifts ESIL to its own intermediate language for decomposition.
- Future work may include