Легкий эмулятор x86 для .NET / Выполнение кода x86 в управляемой среде - PullRequest
3 голосов
/ 11 сентября 2009

Наша компания переводит всю свою линейку продуктов с базы кода C ++ на .NET Framework. У нас очень большая кодовая база, и эта миграция выполняется постепенно в течение многих лет.

Мы хотели бы воспользоваться некоторыми преимуществами чистого управляемого кода, такого как Silverlight, но есть много устаревших модулей C ++ / x86, для переноса которых нам потребуется время на .NET.

Одним из решений было бы для нас загрузить эти модули в легкий эмулятор x86, работающий в небольшой песочнице памяти в .NET Framework. Это позволило бы нам обращаться к устаревшему коду x86 DLL, сохраняя при этом чисто управляемое приложение.

Кто-нибудь знает о таком проекте?

С уважением,

Dan

Ответы [ 2 ]

2 голосов
/ 11 сентября 2009

Я не знаю, проект, который позволил бы это.

При этом я не думаю, что это реалистичное ожидание в любом случае. Использование нативного кода означает не только выполнение инструкций x86.

Большая проблема будет связана с использованием кода библиотеки. Это не будет переносимым в эмулятор, так как эмулятор, вероятно, должен будет не только реализовывать инструкции x86, но и имитировать Windows API и т. Д.

Если нативный код представляет собой просто числовой код, переносить его, вероятно, проще, чем тестировать его в эмуляторе. Если это сложный код с использованием библиотек, я не вижу, чтобы это работало практически, даже если бы существовал такой эмулятор.

Я бы просто сконцентрировался на функциональности, которая нужна вам для истинного управления, и попытался бы перенести ее. C ++ / CLI делает это проще (при условии, что ваш собственный код был на C ++), поскольку вы всегда можете попробовать скомпилировать один файл за раз с включенным /clr:pure и просто исправлять ошибки по мере необходимости.

Для вещей, которые не требуют 100% управляемости, взаимодействие в C ++ / CLI является хорошей отправной точкой, пока вы не сможете портировать свою базу кода через нее.

1 голос
/ 16 сентября 2010

Изменение для Java вместо .net. Тогда вы можете использовать это:

http://jpc.sourceforge.net

для запуска существующего кода

или скомпилируйте в Java B-код из C ++, используя LLJVM или что-то подобное.

...