Aparte de lo que te dijo Shaddy:
Cada programa tiene sus 4GB de memoria en el espacio de direcciones, eso no quiere decir que ocupen 4gb de memoria física, si no que el programa puede direccionar cualquier dirección en ese rango.
Nox.
Bueno, eso en realidad no es cierto. En arquitecturas x86 (32-Bit) el máximo de memoria virtual por proceso son 2 GB (0x00000000-0x7FFFFFFF).
Gracias Shaddy y Иōҳ por vuestras respuestas.
Con esto ya me queda mas claro lo del mapeado de la memoria.
Mi duda era si podia generar un programa con las abeceras bien definidas pero mapeado en unas direcciones fura de las que se usan por costumbre y claro esta, que luego el procesador lo entendiease y el programa funcionara.
Sabiendo que estos parametros los puedo definir en el linkador ya puedo hacer pruebas.
Saludos
Puedes definirlos en el 'linker' o puedes definirlos a mano, como ya te dije
ImageBase lo puedes cambiar manualmente.
Un saludo.