Какова связь (если таковая имеется) языка ассемблера MASM и ILASM? - PullRequest
0 голосов
/ 19 декабря 2010

Каково отношение (если есть) языка ассемблера MASM и ILASM.Есть ли преобразование один в один?Я пытаюсь включить квантовую ГИС в программу, которую я пишу по мере продвижения!У меня есть ГИС на моем компьютере, у меня есть RedGate Reflector, и он, ни Object Browser из Visual Studio 2008, не может открыть один (из нескольких, который я не имею четкого представления о том, как они ведут себя) из DLL в Quantum.Я использовал редактор сборки MASM и «открыл» ту же самую dll, и она извергла то, что я не ожидал, что обязательно пойму в первую очередь.Как я могу / могу сделать преобразование того же самого «кода» во что-то, с чем я могу взаимодействовать в ILASM, и я предполагаю, следовательно, в Csharp?Огромное спасибо за чтение и за все ответы на предыдущие вопросы ... пожалуйста, имейте в виду, что я относительно новичок в программировании на Csharp и даже более свеж в MASM и ILASM.

Ответы [ 3 ]

1 голос
/ 19 декабря 2010

MASM работает с инструкциями x86 и зависит от платформы / процессора, в то время как ILASM ссылается на инструкции .Net CIL (общий промежуточный язык), которые не зависят от платформы / процессора.Трудно перейти от чего-то конкретного к чему-то более общему, поэтому, AFAIK, не существует конвертера из MASM в ILASM (обратное есть!)

1 голос
/ 19 декабря 2010

IL - независимый от платформы уровень абстракции над собственным кодом.Код, написанный на платформе .NET на C #, VB.NET или другом языке .NET, компилируется в сборку .EXE / .DLL, содержащую IL.Как правило, при первом выполнении кода IL среда выполнения .NET запускает его через NGen, который снова компилирует его в собственный код и сохраняет выходные данные во временном месте, где он фактически выполняется.Это позволяет развертывать код платформы .NET на любой платформе, поддерживающей эту платформу .NET, независимо от процессора или архитектуры системы.

Как вы уже видели, Reflector отлично подходит для просмотра кода в сборке.потому что IL можно легко просмотреть в форме C # или VB.NET.Это связано с тем, что IL, как правило, представляет собой инструкции более высокого уровня и также содержит много метаданных, которых обычно не было бы в собственном коде, таких как имена классов, методов и переменных.

Также возможно скомпилировать a.NET проект напрямую в собственный код, установив платформу проекта Visual Studio или вызвав Ngen.exe непосредственно в сборке.После этого действительно трудно понять нативный код.

0 голосов
/ 19 декабря 2010

Нет никакой связи между языком ассемблера MASM и ILASM. Я не вижу у вас никакого способа конвертировать нативный код в IL-код. CLR понимает IL только тогда, когда язык ассемблера MASM относится к собственному машинному коду. CLR превращает IL в собственный код во время выполнения

...