.NET - загрузка файлов

Тема в разделе "WASM.RESEARCH", создана пользователем CnCVK, 19 окт 2006.

  1. CnCVK

    CnCVK New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    108
    Я тут подметил интересную вещь:
    Игра для Windows CE написанная на .NET CF запускается на Win32 (x86) и после нескольких MessageBox завершается :)
    В поле типа машины стоит 14Ch = x86
    Вопрос: Как она луадиться на ARM и на x86?
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Может там MSIL вместо нативного кода?
     
  3. Bill_Prisoner

    Bill_Prisoner New Member

    Публикаций:
    0
    Регистрация:
    4 май 2005
    Сообщения:
    238
    Quantum
    А чтож там еще может быть? Конечно IL - если только модуль не написан на С++ with Managed Extensions - этот язык позволяет смешивать IL и Native.
    CnCVK
    Ну вооще-то так и должно быть. Компоненты целевая платформа которых .NET CF будут запускаться только там где есть .NET CF. То же самое и с полноценным .NET Framework. Все происходит потому что строгие имена компонентов FCL .NET Compact Framework и .NET Framework различаются.
     
  4. CnCVK

    CnCVK New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    108
    Это понятно :)
    Не понятно как загрузчик пропускает тип файла x86 на ARM...
     
  5. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Bill_Prisoner
    Обычно там нативный ARM код. IL мне ещё не попадался ни разу.
     
  6. Bill_Prisoner

    Bill_Prisoner New Member

    Публикаций:
    0
    Регистрация:
    4 май 2005
    Сообщения:
    238
    Quantum
    Ну вообще-то в .NET исполняемых файлах должен пристутствовать именно Intermediate Language код - это часть платформы. И если это .NET Compact Framework, то ничего не меняется. Компиляция в код целевой платформы просходит на лету во время загрузки. Учитывая, что для на Visual C++ with Managed Extenstions не пришут приложения для ARM, то там не может быть Native кода. Как ты определяешь ARM там код или нет?? ILDasm?

    CnCVK
    Хз. Впринципе теоретически учитывая, что IL не зависит от платформы это не должно вызывать трудностей. А так об этом нигде не написано, кроме IDA.
     
  7. CnCVK

    CnCVK New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    108
    Ведь MSIL всеравно через стандартный загрузчик луадиться?
     
  8. Bill_Prisoner

    Bill_Prisoner New Member

    Публикаций:
    0
    Регистрация:
    4 май 2005
    Сообщения:
    238
    CnCVK
    IL вообще не грузиться :), грузятся управляемые модули, которые содержат файл с декларацией. А вместе с ними грузится общеязыковая исполняющая среда (CLR) - да именно через стандартный загрузчик. Но вообще, когда устанавливается .NET Framework загрузчик правиться - например, он может различать управляемые модули по COM Descriptor директории, а до это не мог :) Если эта директория присутствует, то в адресное пространство процесса загружается исполняющая DLL - MSCOREE.DLL. Кароч загрузчик тот, но он изменяется для поддержки .NET софта.
     
  9. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Bill_Prisoner
    Ну, я не понял, что речь про .NET экзешники, т.к. не встречал таких ещё, хотя слышал, что они есть (поэтому и предположил, что там может быть платформо-независимый IL). Естественно, такой экзешник загрузится везде, где есть интерпретатор, хоть на x86, хоть на арме.
     
  10. Bill_Prisoner

    Bill_Prisoner New Member

    Публикаций:
    0
    Регистрация:
    4 май 2005
    Сообщения:
    238
    Quantum
    Да вот в том-то и дело, что не везде. Теоретически, да. Но платформы различаются! На покетах - .NET Framework Compact, на писюках - .NET Framework. Они не совместимы на данный момент. Но Micro$oft в будущем планирует сделать их совместимыми. И кстати не "интерпретатор", а JIT-компилятор - ну не мне Вам Quantum рассказывать ;) Для Windows 9x/Me - да там вообще есть истинно платформная зависимость - на EP стоит переход - JMP - для x86 платформ. Одним словом не удасться запустить проги на разных платформах. Покрайней мере сейчас. Если даже далее MS сделает совместимость фрэймворков, то у Framework Compact есть серьезные ограничения (для примера нельзя в делегатах использовать асинхронные вызовы или к примеру нельзя создавать мультимодульные сборки) - надо будет писать с наименьшим общим знаменателем Compact Framework.
     
  11. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Bill_Prisoner
    Видимо, будет как J2ME vs. J2SE/EE.