5. 단원 마무리
어셈블리를 가르친다면서 한참동안 CIL이라는 괴상한 언어를 가르쳤다. 중간 언어가 필요하다는 것은 이해했지만 굳이 별로 믿기지도 않는 무명 프로그래머가 만든 언어로 강의를 진행해야했을까 싶었던 분들을 위해 마무리에서 이야기하자면, 어셈블리를 바로 가르치지 않고 굳이 CIL이라는 중간 단계 언어를 도입한 것은, 어셈블리 언어를 당장 배우기에는 어셈블리에는 지금까지 설명한 문법적 요소 외에 불필요하게 알아야 할 지식들이 너무 많다는 이유가 있었다. 예를 들어 바로 어셈블리 코드를 시작하려면 컴파일러는 어떤 것을 사용해야 하는지, globl은 무슨 키워드인지, .text는 뭐고 .data와 무슨 차이가 있는지, 심지어는 진입점이 어디인지조차도 제대로 갈피가 안 잡히는 경우가 많다. CIL은 C를 기반으로 한 언어이기 때문에 이런 면에서는 월등히 유리했다. 파일을 포함하려면#include 전처리기, 전역 문자열을 선언하려면 STRING을 사용하면 된다. 즉 CIL은 당장 필요하지 않은 부분은 알고 있는 대로, 정말 배워야 하는 부분은 모두 CIL로 작성하도록 하여 문서의 내용에 보다 집중할 수 있도록 필자가 만든 도구이다.
다음에 배울 내용은 실제 어셈블리 언어에 대한 내용이다. 처음에는 MASM이라는 Microsoft에 종속적인 어셈블리 언어를 기준으로 설명하려고 했는데, 기왕 문서를 분리하는 김에 이에 대해서도 검토해볼 기회를 갖게 되어 다행이라고 생각한다.