Как реализован «Любой процессор»? - PullRequest
2 голосов
/ 19 января 2012

Как «Любой ЦП» реализован на низком уровне?

Нет двух форматов: PE32 и PE64?Как Windows x86, так и x64 могут работать 32-разрядно.Но это не сделано с помощью 64-разрядного исполняемого файла внутри 32-разрядного и запуска его в памяти, потому что тогда у процесса будет другой идентификатор, чем у стартера.Так как они это сделали?

Ответы [ 2 ]

7 голосов
/ 19 января 2012

В своем аргументе против любого процессора Рик Байерс также включает некоторую справочную информацию, которая имеет отношение к этому вопросу:

Поскольку мы хотели, чтобы люди могли писать .NETбиблиотеки, которые они могли бы повторно использовать как из 32-разрядных, так и из 64-разрядных процессов, мы работали с Windows, чтобы расширить поддержку загрузчика ОС и включить PE-файлы, не зависящие от архитектуры («AnyCPU»).

Проверьте ссылку выше для получения более подробной информации.

1 голос
/ 19 января 2012

PE32 расширен для .NET. Флаг платформы просто указывает, где исполняемый файл предназначен для запуска, и его можно изменить с помощью CorFlags.exe . В этой статье есть хорошее описание .NET File Format .

...