모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 게시물ID : humorbest_1315588
    작성자 : 중용자
    추천 : 52
    조회수 : 3920
    IP : 182.228.***.202
    댓글 : 39개
    베스트 등록시간 : 2016/10/02 03:56:49
    원글작성시간 : 2016/10/01 17:48:23
    http://todayhumor.com/?humorbest_1315588 모바일
    컴파일러 개발 근황
    예전에 컴파일러 개발한다고 글을 올린 이후로 오랬만에 컴파일러 개발 근황을 올립니다.
    아무래도 오유에는 컴파일러 개발에 관심있는 분들이 많지 않은 것 같아 컴파일러 관련해서는 프로그래밍 전문 커뮤니티에 글을 쓰고 있습니다.

    현재 개발중인 컴파일러는 간단하게 말해서 C Preprocessor + Rust + Python 입니다.
    전에는 컴파일러가 생성한 어셈블리 코드를 FASM을 이용하여 컴파일하고 실행파일을 만들어 냈는데 현재 어셈블러를 직접 만들고 있습니다.
    컴파일 전과정을 직접 개발하여 성능의 극대화를 추구하려는 것도 있지만 가장 큰 이유는 기존의 컴파일러 개발 방식과는 전혀 다른 방식으로 접근하기 위해서 입니다.
    일반적으로 컴파일러는 문법을 BNF으로 정의하고 직접 렉서, 파서를 만들거나 오픈 소스 렉서, 파서 등으로 토큰 테이블과 신택스 트리를 생성한 다음 중간 코드 생성하고 생성된 중간 코드를 플랫폼에 맞게 기계어로 변환하고 링커로 실행파일을 만드는 과정을 거칩니다.

    저는 어셈블러에 살을 붙이는 방식으로 역으로 컴파일러를 개발하고 있습니다.
    우선 순수하게 어셈블러 니모닉과 지시어로 이루어진 어셈블러를 만든 후 앞단에 C Preprocessor를 붙이고 어셈블러의 스캐너와 파서에 고급언어 문법을 추가할 생각입니다.
    고급 언어의 문법추가는 실제로 컴파일시 생성되야 할 기계어 코드를 어셈블리로 직접 생성한 이후 같은 기능을 하는 문법을 추가하고 컴파일하여 동일한 결과가 나오는지 검토하는 방식을 사용할 생각입니다.
    이미 FastASM을 개발할 때 계속 사용했던 방식인데 예전에는 고급언어 문법 스캐너, 파서와 어셈블러의 스캐너, 파서가 분리되어 있었다면 지금은 이걸 하나로 합치려는 것이죠.

    문법은 기존의 Visual Basic .Net에 비슷한 문법에서 생산성과 접근성을 위해 파이썬으로 변경했습니다.
    최대한 파이썬의 문법에 가깝게 만들어 기존의 수많은 파이썬을 어렵지 않게 포팅할 수 있게 하여 제가 만들고 있는 컴파일러가 그냥 마이너 컴파일러가 되지 않게 하기 위해서 입니다.
    아예 동일하게 문법을 하지 않는 이유는 파이썬의 문법이 갖고 있는 수많은 단점들과 모든 문법을 지원할 경우 제가 원하는 어셈블리어에 버금가는 성능의 고급언어는 구현이 불가능하기 때문입니다.
    C의 Preprocessor 도입은 운영체제 API들이나 DLL API를 사용하기 위해 해야하는 정의를 최대한 줄이기 위해서 입니다.
    문법을 파이썬으로 해서 파이썬 라이브러리의 포팅을 쉽게할 수 있게 했듯이 C의 Preprocessor를 도입하여 API 등을 사용하기 위한 정의를 C의 해더를 이용하겠다는 겁니다.

    현재 어셈블러는 절반이상 진행이 된 상태로 PE 해더부분만 더 가다듬으면 내일중에 간단한 명령들은 컴파일이 될 것 같습니다.
    하지만 요즘 CPU들 명령이 너무 많아 모든 명령이 추가 되려면 상당한 시간이 걸릴 것 같습니다.
    컴파일러의 구조는 대부분 만들어진 상황으로 앞으로는 부지런한 노가다가 될 것 같습니다.
    파이썬 문법 추가후 셀프 호스팅으로 다시 컴파일러를 만드는 것은 내년에나 가능하지 않을까 생각중입니다.

    이 게시물을 추천한 분들의 목록입니다.
    [1] 2016/10/01 17:59:53  183.102.***.52  정겨울  423595
    [2] 2016/10/01 18:25:26  211.36.***.69  순잼  667643
    [3] 2016/10/01 19:44:08  116.34.***.231  뉴럴네트워크  720836
    [4] 2016/10/01 19:52:40  115.22.***.44  DB2  228007
    [5] 2016/10/01 21:31:44  124.5.***.157  향기없는바람  384438
    [6] 2016/10/01 21:59:52  183.101.***.80  꾸듯  357582
    [7] 2016/10/01 22:27:15  119.204.***.103  을파소  440752
    [8] 2016/10/01 23:43:04  222.112.***.50  모지리이  665701
    [9] 2016/10/02 00:37:48  60.241.***.216  택배다문열어  680804
    [10] 2016/10/02 03:56:49  110.13.***.27  내가니엡이다  94397
    푸르딩딩:추천수 3이상 댓글은 배경색이 바뀝니다.
    (단,비공감수가 추천수의 1/3 초과시 해당없음)

    죄송합니다. 댓글 작성은 회원만 가능합니다.


    현재 게시판의 베스트게시물입니다.  
    번호 제 목 이름 날짜 조회 추천
    1360521
    (프로그래머 필독, 약스압) 녹내장 관련 경험담... [40] 좋은아재 17/01/02 06:43 4030 68
    1360423
    신기한 게임 SHENZHEN IO [11] 창작글 네요 17/01/01 23:26 3941 28
    1358883
    프로그래머라는 직업 다시 한번 생각해보세요... [48] 비오는가을 16/12/29 16:58 6776 45
    1353736
    개발자, 테스터, 클라이언트.gif [6] 탈퇴한회원임 16/12/19 09:29 4370 45
    1346021
    흔한 깃허브에 풀리퀘스트 [6] main() 16/12/05 07:43 3752 15
    1342435
    5년차 개발자가 말하는 개발이야기 #1 [49] 창작글외부펌금지 야나기 16/11/29 13:31 15456 39
    1339215
    햇병아리가 시작하고 정리하는 파이썬 2편 [7] 히버 16/11/22 13:25 2337 24
    1338801
    파이썬 공부중 질문있습니다. [41] 본인삭제금지 히버 16/11/21 17:12 2634 50
    1338349
    [Python3] 네이버 카페 댓글 수집 스크립트 입니다. [13] 만능소보로 16/11/20 20:11 4492 23
    1338089
    [공유] 틈틈이 만들어왔던 게임 소스 공유합니다~ +@(내용 추가) [20] 창작글 노력의천재 16/11/20 09:28 2131 30
    1330073
    한국형 랭귀지 그네(GNE) 런칭 [10] 펌글 오즈™ 16/11/02 21:09 2580 43
    1330061
    등짝을 보자 - 어느 프로그래머의 자기 반성 [11] 창작글 ozlael 16/11/02 20:50 3078 45
    1328786
    윈10) 환경변수 설정창 열고 입꼬리 승천 [12] 연예인파괴 16/10/31 07:31 7077 29
    1324112
    [개인보관용] webcmd asp [클릭금지] [30] 저녁먹을래? 16/10/21 00:01 2265 50
    1321034
    [코딩의 요정]은 실재합니다. [35] 창작글 중원_ 16/10/14 12:35 5553 52
    1317679
    코딩의 요정은 실존합니다. [9] 중원_ 16/10/06 22:14 4354 43
    1317128
    톰캣 서버 질문이요ㅠㅠ [29] 본인삭제금지 은비앓이 16/10/05 19:40 2739 37
    1316251
    미쳐가는 프로그래머.... [10] 자징자징거 16/10/03 19:30 6202 32
    컴파일러 개발 근황 [39] 중용자 16/10/02 03:56 3920 52
    1306326
    프로그래머가 명심해야 할 말.txt [31] 예비군2년차 16/09/10 14:13 5824 63
    1294740
    자동화의 끝.... [52] 물어라이코스 16/08/16 23:10 5291 56
    1293270
    [펌] 코드리뷰의 중요성 [20] 펌글 navs 16/08/13 13:31 4516 23
    1292500
    후우..진짜 뒷일은 생각도 안하고 막지르는구나.. [22] 살고싶지않다 16/08/11 14:56 5238 51
    1287811
    답답터지는 코더들 [33] 창작글 16/08/01 00:07 7031 43
    1285263
    친구에게 raid를 설명해주었습니다. [14] connor9 16/07/26 22:58 3063 35
    1284573
    미러링은 우리 영역 아니었던가? [24] 본인삭제금지외부펌금지 irowin 16/07/25 18:33 3241 52
    1284482
    [스압?] 썬더치킨님이 쓰신 전자정부 문제에 대한 제 의견 [5] 창작글 컴포지트 16/07/25 15:50 1489 20
    1282283
    프로그래머는 예술가 입니다. [17] greenmaker 16/07/21 22:49 2887 23
    [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [다음10개▶]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈