게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
Hybrid - 새로운 컴파일러를 제작하는 걸로 결론을 내렸습니다.
게시물ID : programmer_16886짧은주소 복사하기
작성자 : 중용자
추천 : 4
조회수 : 661회
댓글수 : 7개
등록시간 : 2016/04/23 20:34:27
어제 FastASM 현황을 글을 올린 이후 오늘 새로운 컴파일러 제작에 대한 타당성을 검토해 봤습니다.
주로 Rust, Go와 같은 최신언어나 Python 같이 사용하기 쉬운 언어들의 특징, 문법 등을 검토했죠.
그 중에 Rust를 보고 많은 감명을 받았습니다.
Zero-cost abstractions나 garbage collector없는 memory safety의 구현 방식이 지금 제가 FastASM을 구현하고 있는 방식과 매우 유사하더군요.
제가 구현한 FastASM은 Class 상속에 있어 변수, 함수 상속 비용이 전혀 들지 않고 Class 함수 호출에 기본으로 들어가는 Class 포인터 전달조차 없습니다.

어찌됐던 중간 코드로 x64 assembly code를 생성하면 나머지는 외부 툴을 이용해 컴파일 하는 방식을 사용하면 생각보다는 시간을 단축시킬 수 있을 것 같아 일단 compiler제작에 발을 내딛어 볼까 합니다.

아래 글은 어떤 식으로 컴파일러를 구현할지에 대해 생각을 정리해본 글로 확정적인 것은 아닙니다.
개발은 기본적인 고급 문법 사용에는 문제가 없는 FastASM으로 할 생각이고 yacc 같은 외부 툴이나 라이브러리는 이용하지 않을 생각입니다.

매일 꾸준히 개발한다고 보장할 수는 없기에 언제쯤 배포판이 나올지는 얘기할 수 없지만 FastASM 개발을 중간에 몇달씩 쉬더라도 지금까지 이어나가고 있는 것 처럼 Hybrid의 개발 또한 중단하지 않고 가끔 개발 근황을 올리겠습니다.

Introduction

취미로 FASM(http://flatassembler.net)을 이용하여 assembly programming을 하던 중 macro를 이용하여 가독성을 높이는 작업을 시작하고 FastASM이라 명명합니다.
처음에는 기존의 assembler 들의 macro와 유사한 macro로 시작했지만 점차적으로 직접적인 assembly instruction의 사용이 사라지며 Visual Basic .Net과 유사한 형태를 띄게 됩니다.
컴파일러의 최적화 기능이나 클래스 상속 등 고급 언어들이 지원하는 기능들을 계속 추가합니다.
compiler의 parser가 아닌 macro를 이용하여 parsing을 하다보니 기술적으로 구현이 불가능한 기능과 compile 속도의 저하가 문제가 됐습니다.
취미로 assembly로 개발하며 편리한 개발을 위해 기능을 추가할 때는 어찌됐던 assembly 문법으로 개발할 때보다야 월등히 편리하니 문제가 되지 않았지만 점점 발전하면서 형태가 고급언어에 가까워질수록 개발이 한계에 부딪치게 된 것이죠.
그래서 결국 새로운 compiler를 만들기로 결정하고 이름을 Hybrid라 명명합니다.
assembly로 직접 개발하는 것에 가까운 실행 속도와 파일 크기를 유지하는 조건내에서 어떤 언어라도 벤치마킹해서 도입하겠다는 의미에서 지은 이름입니다.

Concepts

Features

Plan

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호