Hola, algunos comentarios. En primer lugar Ernesto esto atañe unicamente al linker, generalmente este tipo de archivos se llaman link control file, el compilador no deberá saber nada de esto. Con respecto a lo que dice Suky, capaz con un tipo de alineación se pueda resolver eso, en otra que arquitectura trabajé podrias definir para los tipos de datos una alineación distinta, es decir para char alineación a un byte, para int alineación a dos bytes, de esta manera una variable int siempre quedaría en una dirección par y nunca ocurriría lo que mencionas, el costo de esto es desperdicio de memoria.
Saludos !