... | ... | @@ -17,58 +17,58 @@ |
|
|
### Common language infrastructure (CLI)
|
|
|
<br>
|
|
|
##### Common language infrastructure (CLI) is:
|
|
|
1. Microsoft사에서 ECMA표준에 제출한 규약이다.
|
|
|
2. 실행 코드의 형태에 대한 명세를 제공한다.
|
|
|
* Common type system (CTS): CLI규약을 따르는 모든 언어가 지켜야 할 타입의 규격
|
|
|
* Common language specification (CLS): CLI규약을 따르는 모든 언어가 지켜야 하는 최소한의 언어사양
|
|
|
* Meta-data
|
|
|
3. 실행 코드가 실제 실행되는 환경(Virtual Execution System)에 대한 명세를 제공한다.
|
|
|
4. CLI명세를 기반으로 생성되는 실행 코드를 CIL 혹은 IL이라 한다.
|
|
|
5. CLI명세를 기반으로 .NET Framework에서 제공하는 Virtual Execution System을 CLR이라 한다.
|
|
|
6. CLI명세를 기반으로 만들어진 실행환경이 있다면, .NET Framework에서 생성되는 IL코드를 실행 할 수 있다.
|
|
|
(ex. 모노(mono))
|
|
|
1. Microsoft사에서 ECMA표준에 제출한 규약이다.
|
|
|
2. 실행 코드의 형태에 대한 명세를 제공한다.
|
|
|
* Common type system (CTS): CLI규약을 따르는 모든 언어가 지켜야 할 타입의 규격
|
|
|
* Common language specification (CLS): CLI규약을 따르는 모든 언어가 지켜야 하는 최소한의 언어사양
|
|
|
* Meta-data
|
|
|
3. 실행 코드가 실제 실행되는 환경(Virtual Execution System)에 대한 명세를 제공한다.
|
|
|
4. CLI명세를 기반으로 생성되는 실행 코드를 CIL 혹은 IL이라 한다.
|
|
|
5. CLI명세를 기반으로 .NET Framework에서 제공하는 Virtual Execution System을 CLR이라 한다.
|
|
|
6. CLI명세를 기반으로 만들어진 실행환경이 있다면, .NET Framework에서 생성되는 IL코드를 실행 할 수 있다.
|
|
|
(ex. 모노(mono))
|
|
|
|
|
|
##### Common type system (CTS) is:
|
|
|
1. 공용 언어가 지켜야 할 타입(클래스, 구조체, 인터페이스, 형 선언 등)의 표준 규격이다. 그렇다고 해서 문법은 아니다.
|
|
|
2. 예를 들면 C#은 int 형을 가지고 있고, VB.net은 integer형이 있다. <br>
|
|
|
그런데 이것이 .net 컴파일러를 거치면서 CTS에서 정의된 INT32형태로 동일하게 사용이 된다
|
|
|
1. 공용 언어가 지켜야 할 타입(클래스, 구조체, 인터페이스, 형 선언 등)의 표준 규격이다. 그렇다고 해서 문법은 아니다.
|
|
|
2. 예를 들면 C#은 int 형을 가지고 있고, VB.net은 integer형이 있다. <br>
|
|
|
그런데 이것이 .net 컴파일러를 거치면서 CTS에서 정의된 INT32형태로 동일하게 사용이 된다
|
|
|
|
|
|
##### Common Language Specification (CLS) is:
|
|
|
1. CTS의 sub-set이며 공용언어간 호환이 되기 위해 준수해야 하는 최소한의 언어 규칙이다.
|
|
|
2. 공용 언어는 CTS전체를 구현할 필요는 없지만 CLS에 정의된 내용만큼은 구현을 해야 한다.
|
|
|
3. 이를 통해 서로 다른 언어를 섞어서 프로그램을 만드는 것이 가능하다.
|
|
|
* 프로그램 전체를 CLS에 맞춰 구현할 수 있다.
|
|
|
* 다른 언어와 함께 사용되는 영역에 한해서만 CLS에 맞춰 구현할 수 있다.
|
|
|
1. CTS의 sub-set이며 공용언어간 호환이 되기 위해 준수해야 하는 최소한의 언어 규칙이다.
|
|
|
2. 공용 언어는 CTS전체를 구현할 필요는 없지만 CLS에 정의된 내용만큼은 구현을 해야 한다.
|
|
|
3. 이를 통해 서로 다른 언어를 섞어서 프로그램을 만드는 것이 가능하다.
|
|
|
* 프로그램 전체를 CLS에 맞춰 구현할 수 있다.
|
|
|
* 다른 언어와 함께 사용되는 영역에 한해서만 CLS에 맞춰 구현할 수 있다.
|
|
|
<br><br>
|
|
|
4. 예를 들면 c++의 경우 다중상속을 지원하지만, .NET Framework에서는 다중상속을 지원하지 않는다.
|
|
|
따라서 다중상속으로 정의된 c++객체는 c#에서는 사용할 수 없다.
|
|
|
4. 예를 들면 c++의 경우 다중상속을 지원하지만, .NET Framework에서는 다중상속을 지원하지 않는다.
|
|
|
따라서 다중상속으로 정의된 c++객체는 c#에서는 사용할 수 없다.
|
|
|
|
|
|
##### Meta-data is:
|
|
|
1. CLI에서 meta-data는 CTS에 정의된 타입을 참조하고 설명하기 위해 사용된다.
|
|
|
1. CLI에서 meta-data는 CTS에 정의된 타입을 참조하고 설명하기 위해 사용된다.
|
|
|
|
|
|
A. Type Descriptions
|
|
|
i.Classes
|
|
|
ii.Base Classes
|
|
|
iii.Implemented interface
|
|
|
iv.Data members
|
|
|
v.Methods
|
|
|
B. Assembly manifest
|
|
|
i.Name
|
|
|
ii.Version
|
|
|
iii.Culture
|
|
|
1.Other assemblies
|
|
|
2.Security permissions
|
|
|
3.Exported types
|
|
|
2. 임의의 특정 언어에 독립적인 방식으로 저장(유지)된다.
|
|
|
3. Reflection이라는 기술을 통해 meta-data를 사용할 수 있다.
|
|
|
A. Type Descriptions
|
|
|
i.Classes
|
|
|
ii.Base Classes
|
|
|
iii.Implemented interface
|
|
|
iv.Data members
|
|
|
v.Methods
|
|
|
B. Assembly manifest
|
|
|
i.Name
|
|
|
ii.Version
|
|
|
iii.Culture
|
|
|
1.Other assemblies
|
|
|
2.Security permissions
|
|
|
3.Exported types
|
|
|
2. 임의의 특정 언어에 독립적인 방식으로 저장(유지)된다.
|
|
|
3. Reflection이라는 기술을 통해 meta-data를 사용할 수 있다.
|
|
|
|
|
|
##### Virtual Execution System (VES) is:
|
|
|
1. CLI에 맞춰 작성된 프로그램을 로드하고 실행하는 시스템이다.
|
|
|
2. 코드가 실행함에 있어 필요로 하는 모듈들을 연결하기 위해 meta-data를 사용하여 manage code 및 data를 실행한다.
|
|
|
3. .NET Framework에서 CLR을 통해 제공한다.
|
|
|
1. CLI에 맞춰 작성된 프로그램을 로드하고 실행하는 시스템이다.
|
|
|
2. 코드가 실행함에 있어 필요로 하는 모듈들을 연결하기 위해 meta-data를 사용하여 manage code 및 data를 실행한다.
|
|
|
3. .NET Framework에서 CLR을 통해 제공한다.
|
|
|
|
|
|
##### Common Intermediate Language (CIL) is:
|
|
|
1. Virtual Execution System (VES)에 의해 해석되는 중간 언어로 자바의 byte-code에 해당한다.
|
|
|
2. machine독립적인 코드이다.
|
|
|
3. .NET Framework에서는 이를 MSIL로 부른다.
|
|
|
4. .NET Framework에서 source code가 타깃 머신의 native code로 변환되는 과정은 아래 그림과 같다. |
|
|
1. Virtual Execution System (VES)에 의해 해석되는 중간 언어로 자바의 byte-code에 해당한다.
|
|
|
2. machine독립적인 코드이다.
|
|
|
3. .NET Framework에서는 이를 MSIL로 부른다.
|
|
|
4. .NET Framework에서 source code가 타깃 머신의 native code로 변환되는 과정은 아래 그림과 같다. |