The think its the processor and if we go deeper the ALU, all need to understand the compiled program. The compiled program is just a series of opcodes, that can be easily converted back to ASM, with no major hassle.

The difficulty only comes with things such as exterior calls to functions and libarys cause the code to become somewhat obfuscated,

but a good revenger can happily work his way logical or in a more abstract way around things like this, so if we talking about just a langauge whose compiler does not attempt optimisation and packing, then it is a logical set of steps to achieve this process.