ESIL − Evaluable Strings Intermediate Language
ESIL aims to describe a Forth-like representation for every target CPU opcode semantics. ESIL representations can be evaluated (interpreted) in order to emulate individual instructions.
Each command of
an ESIL expression is separated by a comma
<source0>,<source1>,<operation>
<source>,<destination>,<operation>
<source_destination>,<operation>
These operations should be enough to emulate most instructions of any architecture
= |
sets the value of the destination to the value of the source | ||
+ |
adds the values of source0 and source1 and pushes the result on the esil stack | ||
- |
subtracts the value of source0 from the value of source1 and pushes the result on the esil stack | ||
* |
multiplies the values of source0 and source1 and pushes the result on the esil stack | ||
/ |
divides the value of source1 by the value of source0 |
jmp eax -> eax,eip,=
radare2(1)