Конвертировать OMF16 в OBJ32 - PullRequest
       57

Конвертировать OMF16 в OBJ32

0 голосов
/ 25 апреля 2011

Есть ли способ преобразовать 16-битный формат объектного файла OMF в 32-битный формат объектного файла COFF?

Ответы [ 3 ]

1 голос
/ 25 апреля 2011

Предположительно, код OMF16 предназначен для 16-битного реального режима x86 или 286 защищенного режима? В этом случае формат объектного файла на самом деле не является проблемой, сам код полностью несовместим, поскольку он использует регистры разных размеров и другую схему адресации.

Более того, если код предназначен для DOS, Win16 или OS / 2 (то есть для систем, которые использовали OMF16), то нацеливание его на 32-разрядную цель - это не просто случай преобразования формата объектного файла.

Вам нужно пересобрать из источника, который задает теги, на вопрос - C или C ++? Либо это, либо у вас есть серьезная задача по реинжинирингу в ваших руках!

1 голос
/ 25 апреля 2011

Я серьезно сомневаюсь, что он существует. Код, предназначенный для работы в 16-битной среде, двоично несовместим с 32-битным режимом. Например, есть инструкция, которая указывает ЦПУ перевернуть размеры битов для следующей инструкции. В 16-битном режиме такая инструкция необходима для использования 32-битных инструкций. Однако тот же код операции необходим для использования 16-битных инструкций в 32-битном режиме.

В дескрипторе сегмента указывается, следует ли считать последовательность кодов операций 16 или 32 битами.

В любом случае, если у вас есть 16-битный код, который вы хотели бы использовать в 32-битном режиме, который не имеет зависимостей от ОС, вы можете использовать его, дизассемблируя его с использованием IDA, а затем перекомпилируйте его с 32-битным ассемблером. Конечно, только если это разрешено его лицензией. (хотя это может быть справедливое использование, но IANAL).

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

0 голосов
/ 25 апреля 2011

Я искал в сети и нашел следующие ссылки: Первый представляет собой набор инструментов:

http://sourceware.org/binutils/

Второй инструмент, который, я думаю, вам нужен: http://sourceware.org/binutils/docs/binutils/objcopy.html

Они работают не во всех случаях (bazsi77 выше), просто проверьте это.

...