2012-08-04 2 views
0

최근에 어셈블리 언어에 관심이 많았습니다. 그렇게하면서, 나는 또한 바이트 코드의 개념에 관심을 갖게되었다. 따라서 Microsoft의 .NET을 살펴보면 일종의 의사 어셈블리를 사용하여 자체 바이트 코드를 만드는 것으로 나타났습니다. 그러나 어셈블리 언어 자체에 정말 감탄했습니다. 나에게 일종의 높은 수준의 어셈블리처럼 보인다.MSIL을 순수 조립으로 구현 했습니까?

제 질문은 순수한 어셈블리로 구현할 수 있습니다. JIT/해석 된 .NET 바이트 코드 대신 컴파일 된 네이티브 코드로 구현할 수 있습니까? 그러한 노력을 시도하는 것이 현명하고 이점은 무엇입니까?

+2

ngen 도구를 사용하여 http://msdn.microsoft.com/en-us/library/6t9t5wcf(v=vs.71).aspx 실행 파일을 최적화 할 수 없기 때문에 어쨌든 제안되지 않았습니다. 나중에 실행하십시오 –

+0

@DiegoDeVita 예, 저는이 도구와 유사한 도구에 대해 알고 있었지만 분명히 그 사용은 매우 제한적이었습니다. –

+0

그럼 궁금한 점은 .. 독점적이지 않은 MSIL-> ASM 변환기/컴파일러가 있습니까? –

답변

1

CIL을 컴퓨터 특정 어셈블리로 변환하는 것이 어느 정도 가능합니다.

Marc Gravell이 Mono AOT에 대한 의견을 1 단계에서 언급했습니다. Mono AOT 페이지에 나열된대로 전체 AOT (런타임 IL 해석 없음)를 사용하는 경우 수행 할 수있는 작업과 수행 할 수없는 작업에 대한 몇 가지 제한 사항이 있습니다. 그렇지 않으면 기계 코드로 변환 될 수있는 일리노이가되며, 나머지는 평상시와 마찬가지로 런타임에 해석됩니다.

IL2CPU created by and for the Cosmos project도 있는데 C#에서 전체 운영체제를 만듭니다. 호스팅 운영 체제가 없다면 .NET Framework가 없으며 IL을 기계 코드로 변환 할 수 밖에 없습니다. IL2CPU에도 한계가 있지만 전체 목록을 알지 못합니다.

그러나 궁극적으로 대다수의 .NET 프로그램에 대한 이점은 거의 없습니다. 프로그램이 크게 빠르게 실행되지 않으며 프로그램을 디버그하기 어렵게 만듭니다 (프로그램이나 IL 번역기에 버그가 있습니까?). 설치가 .NET Framework 자체를 포함하여 끝나면 보안 업데이트 해당 비트 사본에는 적용되지 않습니다. 그래서, 당신이하는 일을 정말로 알지 못한다면,하지 마십시오.

관련 문제