Конвертер Cobol.Net в C # - PullRequest
       10

Конвертер Cobol.Net в C #

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

У нас есть несколько систем в Micro Focus Cobol.Net, которые мы планируем преобразовать в C #.

Мы попытались открыть dll в рефлекторе, но затем мы просто получили код C.

У кого-нибудь есть рекомендации, как это сделать?

Когда я выбираю C # в отражателе, я получаю код, который выглядит следующим образом:

        meminit(&(this._MF_OSBLOCK[0]), 0x20, 4);
        this._MF_OSBLOCK[4] = 0x30;
        this._MF_OSBLOCK[5] = 0x30;
        this._MF_OSBLOCK[6] = 0x30;
        this._MF_OSBLOCK[7] = 0x30;
        meminit(&(this._MF_OSBLOCK[8]), 0x20, 30);
        memcpy(&(this._MF_OSBLOCK[0x26]), &(_MF_LITBLOCK[0]), 2);
        int num2 = 0;
        do
        {
            memcpy(&(this._MF_OSBLOCK[40 + num2]), &(_MF_LITBLOCK[0]), 2);
        }
        while ((num2 += 2) < 0xc6);
        memcpy(&(this._MF_OSBLOCK[240]), &(_MF_LITBLOCK[2]), 4);

Ответы [ 2 ]

4 голосов
/ 04 апреля 2011

Можно смело предположить, что вы смотрите на код C #, Reflector не имеет конвертера кода для C. Чего вы не можете предположить, так это того, что компилятор Cobol генерирует нормальный код C #. Он не обязан делать это. Он может свободно использовать вспомогательные функции, которые определены в сборке времени выполнения, специфичной для компилятора. Не отличается от Microsoft.CSharp.dll.

Получение кода, использующего хелперы с C-подобными именами, не является неожиданным, C уже долгое время является популярным языком. Компиляторы нередко были языковыми переводчиками, переходя от Cobol к C в этом случае, а затем используя компилятор C для генерации машинного кода для конкретной платформы. Думайте о C как о IL старых времен.

Вы можете с уверенностью скомпилировать и запустить сгенерированный код C #, обязательно используйте эту ссылку на специфическую сборку Cobol. Возможно, вам придется выкопать это из GAC. Насколько легко получить достойный C # код, вряд ли. Различия между языками слишком велики.

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

Открытие .NET DLL в Reflector, безусловно, не показывает C-код. Может отображаться код Managed C ++, но его можно изменить, просто выбрав C # в поле со списком языков на панели инструментов.
Подумайте об использовании FileDisassembler add в , который позволяет создать полный проект из сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...