Program that reads code written in machine language and translates it into an equivalent program in a highlevel language.
A decompiler, or reverse compiler, attempts to reverse the process of a compiler which translates a highlevel language program into a binary or executable program.
The first decompilers appeared in the early 1960s.
Many times they are too inaccurate, in which case the disassembly listing provides a far better solution to studying the program.