2010-12-19 4 views
0

MASM 어셈블리 언어와 ILASM의 관계 (있을 경우). 일대일 전환이 있습니까? 임씨는 프로그램에 퀀텀 GIS를 통합하려고 노력 중입니다. 내 컴퓨터에 GIS가 있는데 RedGate Reflector가 있고 Visual Studio 2008의 Object Browser도 열리지 않습니다. (양자가 어떻게 작동하는지에 대한 단서가없는 여러 개 중 하나는 열 수 없습니다.) Quantum의 .dll 파일입니다. 나는 MASM 어셈블리 에디터를 사용했고 같은 dll을 "열었다". 그리고 그것은 내가 처음에는 필연적으로 이해할 것을 기대하지 않은 것을 분출했다. 내가 ILASM에서 상호 작용할 수있는 것과 동일한 "코드"를 변환 할 수 있습니까? 그렇다면 Im은 Csharp에서 가정합니다. 독서에 대한 감사와 이전 질문에 대한 모든 답변 ... Csharp의 프로그래밍에 비교적 새로운 점, 그리고 MASM과 ILASM에 더 새삼 스럽습니다.MASM 어셈블리 언어와 ILASM의 관계 (있는 경우)는 무엇입니까?

+0

네이티브 코드를 .NET 코드 ('IL')로 변환 하시겠습니까?! – Xaqron

답변

0

Ther는 MASM 어셈블리 언어와 ILASM 사이의 관계가 없습니다. 네이티브 코드를 일리노이 코드로 변환 할 수있는 방법이 없다. IL은 MASM 어셈블리 언어가 네이티브 컴퓨터 코드와 관련된 경우에만 CLR로 이해할 수 있습니다. CLR은 런타임시 IL을 원시 코드로 변환합니다.

1

MASM은 플랫폼/프로세서에 종속적 인 반면 MASM은 플랫폼/프로세서에 종속적 인 반면 ILASM은 플랫폼/프로세서 독립적 인 .Net CIL (공통 중간 언어) 지침을 제공합니다. 좀 더 구체적 인 무언가를 좀 더 일반적인 것으로 전환하는 것은 어렵습니다. AFAIK는 MASM에서 ILASM까지의 변환기가 없습니다 (역으로, 거기 있습니다!)

+1

추가 정보 : .NET 어셈블리 (.dll 또는 .exe)에는 CIL 명령어가 포함되어 있습니다. 이 MSDN 기사에서는 JIT 프로세스와 런타임시 CIL을 기계어로 변환하는 방법에 대해 설명합니다. - http://msdn.microsoft.com/en-us/library/ht8ecch6(v=vs.71).aspx 과정은 결코 나쁘지 않습니다. –

1

IL은 원시 코드에 대한 플랫폼 독립적 인 계층입니다. .NET 플랫폼에서 C#, VB.NET 또는 기타 .NET 언어로 작성된 코드는 모두 IL을 포함하는 어셈블리 .EXE/.DLL로 컴파일됩니다. 일반적으로 일리노이 코드가 처음 실행될 때 .NET 런타임은 NGen을 통해 런타임을 실행합니다. 그러면 NGen이 다시 네이티브 코드로 컴파일되고 실제로 실행되는 임시 위치에 출력이 저장됩니다. 이를 통해 .NET 플랫폼 코드는 시스템의 프로세서 나 아키텍처에 관계없이 .NET Framework를 지원하는 모든 플랫폼에 배포 할 수 있습니다.

IL에서 C# 또는 VB.NET 형식으로 쉽게 미리 볼 수 있으므로 리플렉터는 어셈블리에서 코드를 보는 데 적합합니다. IL은 일반적으로 조금 더 높은 수준의 명령어이며 클래스, 메소드 및 변수 이름과 같이 원시 코드가 일반적으로 갖지 못할 많은 메타 데이터를 포함하기 때문입니다.

Visual Studio 프로젝트 플랫폼을 설정하거나 Ngen.exe을 어셈블리에서 직접 호출하여 .NET 프로젝트를 기본 코드로 직접 컴파일 할 수도 있습니다. 일단 완료되면 네이티브 코드를 이해하는 것이 정말 어렵습니다.

관련 문제