336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
C#, VB.NET, J#, F#, C++/CLI, Delphi.NET 등등의 닷넷 프레임워크에서 사용되기 위한 언어는 중간언어(MSIL: Microsoft Intermediate Language)로 번역이 됩니다. 이 바이너리를 실행하는 순간 해당 CPU에 맞는 명령어들로 한번 더 번역이 되는 것이죠. MSIL은 어셈블리어보다는 심플합니다. 명령어의 수도 몇 개 되지 않고 소스 코드도 C언어와 비슷한 형태를 띱니다.
// 파일명: test.il /* 닷넷의 기본 클래스들이 정의된 mscorlib를 참조해 쓰겠다는 부분입니다. */ .assembly extern mscorlib { } /* 이 어셈블리(= exe파일 또는 dll파일)의 이름은 Test입니다. */ .assembly Test { /* 어셈블리의 버전은 1.0.0.0입니다. */ .ver 1:0:0:0 } /* 이 어셈블리의 내부 이름은 test.exe입니다. */ .module test.exe /* 반환값이 없는 main이라는 이름의 정적 메서드를 선언합니다. */ /* 이 함수는 CLR에 의해 메모리가 관리됩니다. */ .method static void main() il managed { /* 이 어셈블리를 실행할 때 진입점 역할을 함을 따로 명시해야 합니다.*/ .entrypoint /* 메서드마다 스택의 크기를 명시해야 합니다. 적당한 값을 기입하면 됩니다. */ .maxstack 16 /* System.Console.WriteLine("Hello, World!"); */ /* "Hello, World!"라는 문자열이 적재된 메모리의 주소를 스택에 push합니다. */ ldstr "Hello, World!" /* System.String 자료형을 매개변수로 받는 WriteLine 메서드를 호출합니다. */ call void [mscorlib]System.Console::WriteLine(class System.String) /* 또는 call void [mscorlib]System.Console::WriteLine(string) 이라 해도 동일합니다. */ ret // 메서드의 끝입니다. }
작성한 파일을 바이너리로 만들기 위해서는 Visual Studio 개발자 명령 프롬프트를 사용합니다. 시작메뉴에서 Visual Studio Tools를 보면 해당 프롬프트의 바로가기가 있습니다. 이를 클릭합니다.
아래와 같이 입력하여 MSIL 소스코드를 바이너리로 어셈블합니다.
ilasm /EXE test.il
test.exe가 생성된다고 메시지가 출력됩니다. 어셈블이 완료된 후 test.exe를 실행하면 Hello, World! 문장이 출력됨을 알 수 있습니다.
'Programming Language > MSIL' 카테고리의 다른 글
MSIL로 입출력하기 및 박싱/언박싱 (0) | 2014.07.27 |
---|---|
MSIL의 기본 자료형 (0) | 2014.07.27 |