Gravando um programa de plataforma cruzada (compatível com 32 e 64 bits) para Windows (como AnyCPU no .NET)

Está me desconcertando como o recurso "AnyCPU" no .NET funciona: Ele carrega o executável como nativo de 32 bits se o sistema for de 32 bits e como 64 bits se o sistema for de 64 bits (o que você pode confirmar facilmente com o Gerenciador de tarefas). Então, obviamente, isso não é impossível.

A questão é: como exatamente a Microsoft fez isso? O Windows originalmente não conhecia a estrutura .NET, portanto, o Windows PE Loader não pode procurar recursos extras nos cabeçalhos do PE para o cabeçalho CLR; esse recurso deve ter sido adicionado por algum tipo de extensão no modo kernel. Mas a estrutura do .NET parece não instalar nada disso ... Perdi completamente como o mesmo executável pode ser nativo de 32 e 64 bits ao mesmo tempo, principalmente porque a desmontagem do mscoree.dll não ocorre. até mostra referências a funções nativas não documentadas.

Alguém tem algum conhecimento e / ou suposições razoáveis sobre como isso foi feito? Obviamente, é possível (não é possível dizer coisas como "não é possível") e isso me faz querer escrever umanativo EXE de plataforma cruzada ...

Editar:

Como uma observação lateral, considere como você não pode executar executáveis de 32 bits em um ambiente Windows PE de 64 bits ...obteve ser uma maneira de estender ou modificar o carregador PE com algum tipo de "plugin", certo?

questionAnswers(2)

yourAnswerToTheQuestion