Конвертер Cobol.Net в C#
У нас есть несколько систем в 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 ответа
Можно с уверенностью предположить, что вы смотрите на код C#, Reflector не имеет конвертера кода для C. Чего вы не можете предположить, так это того, что компилятор Cobol генерирует нормальный код C#. Он не обязан делать это. Он может свободно использовать вспомогательные функции, которые определены в сборке времени выполнения, специфичной для компилятора. Не в отличие от Microsoft.CSharp.dll.
Получение кода, использующего хелперы с C-подобными именами, не является неожиданным, C был языком запуска везде очень давно. Компиляторы нередко были языковыми переводчиками, переходя от Cobol к C в этом случае и затем используя компилятор C для генерации машинного кода для конкретной платформы. Думайте о C как о IL старых времен.
Вы можете уверенно скомпилировать и запустить сгенерированный код C#, обязательно используйте эту ссылку на специфическую сборку Cobol. Возможно, вам придется выкопать это из GAC. Насколько легко получить приличный код на C#, вряд ли. Различия между языками слишком велики.
Открытие.NET DLL в Reflector, безусловно, не показывает C-код. Он может отображать код Managed C++, но это можно изменить, просто выбрав C# в поле со списком языков на панели инструментов.
Рассмотрите возможность использования надстройки FileDisassembler, которая позволяет создать полный проект из сборки.