Here's an interesting experiment. Take a working real-life program (in C) and translate the disassembled code into C, and pass it through the compiler again. How does that result compare in size and speed? It's possible that the resultant code is smaller (in which case, you have a new idea for improving your optimisation), but I would expect that you will get a slightly larger result. Even if your compiler has only one byte overhead for the C environment startup (such as setting up the stack pointer), then recursively passing the code through the compiler will give you an example assembly program that cannot be made the same size or smaller by the compiler.
mvh.,
David