2011-01-10 2 views
4

.NET 프레임 워크의 어떤 단계에서 바이트 코드가 생성됩니까?바이트 코드는 언제 생성됩니까?

사용자가 선택한 소스 코드 (어쩌면 C#)로 소스 코드를 작성했는데이 소스가 컴파일되면 바이트 코드로 변환됩니까? (이 바이트 코드는 무엇을 사용합니까?)

답변

3

정의 :

바이트 코드는 소프트웨어 인터프리터 효율적인 실행 설계된 다양한 명령어의 형태 세트를 나타내는도 로서 상기 컴파일 적합한 것에 사용 된 용어 기계 코드로.

바이트 코드는 일반적인 용어로 자바 환경에서 많이 사용됩니다. .net 중급 언어 (IL 또는 MSIL)는 바이트 코드로 참조 될 수 있습니다. 모든 .net 언어 컴파일러에서 생성됩니다. 나중에 그것은 CLR (자바 세계에서 JVM의 아날로그)에 의해 실행됩니다. CLR은 코드를 실행하기 직전에 Just-In-Time 컴파일러 (CLR의 일부)에 의해 컴파일됩니다. 원시 기계 언어로 컴파일 된 다음 프로세서에서 직접 실행됩니다. (관리되는 바이너리도 미리 컴파일 할 수 있습니다.)

0

.NET Framework를 타겟팅하는 모든 소스 코드는 CLR에 의해 해석되어 실행될 수있는 MSIL (MS Intermediateiate Language)로 컴파일됩니다. MSIL 코드는 응용 프로그램을 실행하는 동안 JIT (Just-In-Time 컴파일러)에 의해 네이티브 코드로 컴파일됩니다. 위키

+0

MSIL은 바이트 코드와 동일합니까? – JHarley1

+0

@ JHarley1 : 기본적으로 그렇습니다. "바이트 코드"는 일반적으로 실제 기계 언어가 아니지만 하나의 중간 언어에 대한 용어로 사용됩니다. 예를 들면 MSIL, UCSD의 p-system, JVM 및 CLisp, Perl 및 Python을 컴파일하기위한보다 전문화 된 언어가 있습니다. –

+0

차이가 있습니다. 자바의 바이트 코드는 원래 해석하기 쉽도록 설계되었습니다. 일리노이가 아니라 기계 코드로 컴파일 된 JIT (just-in-time) 방식으로 설계되었습니다. 바이트 코드에는 ADDI (두 개의 정수 추가)가 있으며 IL에는 모든 피연산자에 대한 ADD 만 있습니다. –

0

바이트 코드는 대부분의 VM 기본 언어에 대한 일반적인 용어입니다.

바이트 코드와 VM 컴파일러가 있습니다.

컴파일러는 코드를 가져 와서 바이트 코드로 변환합니다.

그런 다음 바이트 코드가 VM에 의해 해석됩니다.

VM에는 바이트 코드를 네이티브 어셈블리로 변환하는 Jit이라는 특수 모듈이있을 수 있습니다. 이 기본 어셈블리 인 은 더 이상 VM을 실행할 필요가 없습니다. 그러나 분명히 은 VM을 호출해야합니다.

바이트 코드는 VM과 코드 소스 사이의 사이의 중간 언어입니다.

관련 문제