2013-09-02 8 views
4

Я понимаю, что для такой задачи, скорее всего, не будет специальных программ-конвертеров или чего-нибудь такого простого, но необходимо, чтобы я нашел способ получить 16-разрядную программу для запуска в 64-разрядной Windows. Из-за большого количества ресурсов, которые должны быть им посвящены, эмуляторы не будут хорошим решением.Можно ли конвертировать 16-разрядную программу .exe в 64-разрядный .exe?

Идея, которую я имел для этого проекта, заключалась в том, чтобы декомпилировать весь код из 16-разрядной программы, скопировать ее и перекомпилировать в 64-разрядный код. Возможно ли это с помощью Eclipse или другой среды программирования?

В принципе, я хочу, чтобы 16-разрядная программа выполнялась в 64-битных Windows без эмуляторов. Я понимаю, что это высокий порядок, но возможно ли это?

+0

Я думаю, что вы обречены :(Я предполагаю, что исходный исходный код потерян? –

+0

@Martin James Я считаю, что исходный код будет потерян, но я нашел один набор информации о GitHub. не уверен, является ли код кодом той же самой программы, которую я ищу, потому что нет хорошего описания проекта. Если окажется, что этот исходный код является тем, что я ищу, можно было бы скомпилировать он в 64-битный двоичный код, даже если код был первоначально написан для 16-битных систем? – Variadicism

+0

Возможно, квалифицированный может быть .. wots это написано? –

ответ

3

Проблема выходит за рамки перевода 16-разрядных инструкций с 64-разрядными инструкциями. Существует также ABI (Application Binary Interface), используемый программой для связи с остальной частью системы. 16-разрядная программа, вероятно, использует много вызовов DOS, и вряд ли она пытается напрямую обращаться к оборудованию. Нет никакого способа, чтобы это можно было перевести автоматически. Даже если такое решение существует, я очень сомневаюсь, что результат будет более эффективным, чем работа на виртуальной машине (что на самом деле очень эффективно). Кроме того, программы, написанные для 16-разрядной среды, часто не очень масштабируемы и полностью не способны обрабатывать объемы данных за пределами возможностей исходной целевой платформы.

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