Hex-Rays provide a microcode API with the following capabilities: Get current state of microcode vector-print Modify microcode vector-print Set microcode to a fixed value of specified size
We also provide an example of how to use this API: get the microcode in.hexx (HEX) format convert.hexx into.hex format (hex editor) convert.hex into long-long and int types call SetMicrocode (set the microcode to a certain matrix) get microcode from code base get microcode from disassembly output bitbarge-overwrite the microcode just to see what happens
IDA's microcode API allows reaching the microcode decompiler and the compiler which is used as an intermediate language to transfer source code to the machine code. The API does not allow to modify microcode, but allows to read it in order to display it in a human-readable format. Though this is thought to be a restriction, it allows fully automated decompilation.
We have not been able to implement a complete disassembler on any platform and support all features. For example, the execution speed varies extraordinarily. Some important microcodes have been created to execute as fast as possible without quality loss. The generated code is currently left to emulation until the next beta version of Hex-Rays Decompiler. 7211a4ac4a