There is a good article in "The Firmware Handbook" (Jack Gansel ed. Newnes 2004) called "Understanding Your C Compiler," written by Jakob Engblom (IAR compiler developer) which points out the steps a compiler takes to make a machine executable. If you read that, you will begin to understand why a 'decompiler' is not practical.