4.2) HASM 뼈대 파일
HASM은 이름이 Handy Assembly인 만큼, 기본적으로 어셈블리 언어에 뿌리를 두고 있다. 그래서 거의 모든 구조가 기존의 어셈블리 언어를 잘 따르고 있다.
예제를 보이기 전에 파일 확장자 세 개를 설명하겠다. hda 파일은 Handy Assembly의 약자로, HASM 어셈블리 언어로 작성된 소스 코드 파일이다. hdo 파일은 Handy Object의 약자로, 우리가 개발할 어셈블러 모듈이 hda 어셈블리 소스 코드를 변환하여 생성되는 목적 파일이다. hdx는 Handy Executable의 약자로, 마찬가지로 우리가 개발할 링커 모듈이 어셈블러를 거쳐 생성된 목적 파일을 묶어 프로그램으로 만든 것이다. 다시 말하면 hdx 파일은 프로그램, 즉 실행 가능한 목적 파일이다.
그러면 바로 HASM 어셈블리 언어로 작성된 뼈대 파일을 보이겠다.
HelloHASM.hda |
; 데이터 세그먼트의 시작을 나타냅니다. ; nasm과 다르게 segment 지시어를 기록하지 않습니다. .data
; 코드 세그먼트의 시작을 나타냅니다. .code _main: push ebp mov ebp, esp
; put your code here
mov esp, ebp pop ebp ret |
이 코드를 보고 나선 실망했을 수도 있다. NASM과 다른 것이 크게 없기 때문이다. 하지만 우리가 할 일은 이를nasm과 같은 프로그램에 넘기는 것이 아니라 이 코드를 해석하고 실행하는 실행기를 만드는 일이다. 그래서“Hello, world!"와 같은 기본 문자열을 출력하는 것도 이 코드에서는 제외했다.
이 코드가 HASM의 전체라면 당연히 고급 프로그램을 작성하는 것이 불가능하다. 이 문서에서는 일단 이렇게 간단한 코드를 해석하는 프로그램을 만든 다음, 필요한 기능이 있을 때마다 실행기에 기능을 추가하는 식으로 프로그램을 만들어나갈 것이다.