The use of a standard binary format in the later part of code generation promotes efficiency and interchangeability of tools, but leaves little information on the source file in the machine code representation. We propose a new approach to code generation, based on a single, highly structured internal format used during compilation proper, machine code generation and linkage. This format offers new opportunities for whole-program optimizations. We have implemented and tested a code generator based on this format. Although the use of a traditional binary format is more efficient, we believe that the increase in code size and compilation times are largely compensated by the opportunities offered by this new trajectory. To support this assertion, we discuss some of its possible applications and show the performance potential of one of them.