Decompiler Internals: Microcode

Conference:  BlackHat USA 2018



This talk discusses the microcode used in the Hex-Rays Decompiler and its potential for building intelligent binary analysis tools.
  • The microcode is a simple yet powerful intermediate language used in the decompiler to represent real-world programs.
  • The microcode enables data flow analysis and allows for the creation of new analysis types.
  • The availability of the microcode and API allows for the implementation of plugins and the improvement of the decompiler.
  • The microcode makes the decompiler portable and allows for support of multiple processors.
  • Implementing an intermediate representation or language is important for simplifying the complexity of processor instructions and making the decompiler more efficient.
The microcode allows for the decompiler to be portable and support multiple processors, simplifying the process of creating a decompiler for a new processor. This is important because there are many processors with their own unique features and oddities, and an intermediate language helps to get rid of this complexity. Additionally, the microcode enables data flow analysis and the creation of new analysis types, making the decompiler more powerful and efficient.


This talk sheds some light into the intermediate language that is used inside the Hex-Rays Decompiler. The microcode is simple yet powerful to represent real world programs. With the microcode details publicly available, now it is possible to build more intelligent binary analysis tools on top of the decompiler.