모바일 오유 바로가기
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 : bestofbest_271497
    작성자 : 중용자
    추천 : 115
    조회수 : 18020
    IP : 182.228.***.202
    댓글 : 39개
    베오베 등록시간 : 2016/10/02 16:01:02
    원글작성시간 : 2016/10/01 17:48:23
    http://todayhumor.com/?bestofbest_271497 모바일
    컴파일러 개발 근황
    예전에 컴파일러 개발한다고 글을 올린 이후로 오랬만에 컴파일러 개발 근황을 올립니다. <div><span style="font-size:9pt;">아무래도 오유에는 컴파일러 개발에 관심있는 분들이 많지 않은 것 같아 컴파일러 관련해서는 프로그래밍 전문 커뮤니티에 글을 쓰고 있습니다.</span></div> <div><br></div> <div>현재 개발중인 컴파일러는 간단하게 말해서 C Preprocessor + Rust + Python 입니다.</div> <div><span style="font-size:9pt;">전에는 컴파일러가 생성한 어셈블리 코드를 FASM을 이용하여 컴파일하고 실행파일을 만들어 냈는데 현재 어셈블러를 직접 만들고 있습니다.</span></div> <div><span style="font-size:9pt;">컴파일 전과정을 직접 개발하여 성능의 극대화를 추구하려는 것도 있지만 가장 큰 이유는 기존의 컴파일러 개발 방식과는 전혀 다른 방식으로 접근하기 위해서 입니다.</span></div> <div><span style="font-size:9pt;">일반적으로 컴파일러는 문법을 BNF으로 정의하고 직접 렉서, 파서를 만들거나 오픈 소스 렉서, 파서 등으로 토큰 테이블과 신택스 트리를 생성한 다음 중간 코드 생성하고 생성된 중간 코드를 플랫폼에 맞게 기계어로 변환하고 링커로 실행파일을 만드는 과정을 거칩니다.</span></div> <div><br></div> <div>저는 어셈블러에 살을 붙이는 방식으로 역으로 컴파일러를 개발하고 있습니다.</div> <div><span style="font-size:9pt;">우선 순수하게 어셈블러 니모닉과 지시어로 이루어진 어셈블러를 만든 후 앞단에 C Preprocessor를 붙이고 어셈블러의 스캐너와 파서에 고급언어 문법을 추가할 생각입니다.</span></div> <div><span style="font-size:9pt;">고급 언어의 문법추가는 실제로 컴파일시 생성되야 할 기계어 코드를 어셈블리로 직접 생성한 이후 같은 기능을 하는 문법을 추가하고 컴파일하여 동일한 결과가 나오는지 검토하는 방식을 사용할 생각입니다.</span></div> <div><span style="font-size:9pt;">이미 FastASM을 개발할 때 계속 사용했던 방식인데 예전에는 고급언어 문법 스캐너, 파서와 어셈블러의 스캐너, 파서가 분리되어 있었다면 지금은 이걸 하나로 합치려는 것이죠.</span></div> <div><span style="font-size:9pt;"><br></span></div> <div><span style="font-size:9pt;">문법은 기존의 Visual Basic .Net에 비슷한 문법에서 생산성과 접근성을 위해 파이썬으로 변경했습니다.</span></div> <div><span style="font-size:9pt;">최대한 파이썬의 문법에 가깝게 만들어 기존의 수많은 파이썬을 어렵지 않게 포팅할 수 있게 하여 제가 만들고 있는 컴파일러가 그냥 마이너 컴파일러가 되지 않게 하기 위해서 입니다.</span></div> <div><span style="font-size:9pt;">아예 동일하게 문법을 하지 않는 이유는 파이썬의 문법이 갖고 있는 수많은 단점들과 모든 문법을 지원할 경우 제가 원하는 어셈블리어에 버금가는 성능의 고급언어는 구현이 불가능하기 때문입니다.</span></div> <div><span style="font-size:9pt;">C의 Preprocessor 도입은 운영체제 API들이나 DLL API를 사용하기 위해 해야하는 정의를 최대한 줄이기 위해서 입니다.</span></div> <div><span style="font-size:9pt;">문법을 파이썬으로 해서 파이썬 라이브러리의 포팅을 쉽게할 수 있게 했듯이 C의 Preprocessor를 도입하여 API 등을 사용하기 위한 정의를 C의 해더를 이용하겠다는 겁니다.</span></div> <div><span style="font-size:9pt;"><br></span></div> <div><span style="font-size:9pt;">현재 어셈블러는 절반이상 진행이 된 상태로 PE 해더부분만 더 가다듬으면 내일중에 간단한 명령들은 컴파일이 될 것 같습니다.</span></div> <div>하지만 요즘 CPU들 명령이 너무 많아 모든 명령이 추가 되려면 상당한 시간이 걸릴 것 같습니다.</div> <div>컴파일러의 구조는 대부분 만들어진 상황으로 <span style="font-size:9pt;">앞으로는</span><span style="font-size:9pt;"> </span><span style="font-size:9pt;">부지런한 노가다가 될 것 같습니다.</span></div> <div>파이썬 문법 추가후 셀프 호스팅으로 다시 컴파일러를 만드는 것은 내년에나 가능하지 않을까 생각중입니다.</div>

    이 게시물을 추천한 분들의 목록입니다.
    [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 초과시 해당없음)

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


    현재 게시판의 베스트오브베스트 게시물입니다.  
    번호 제 목 이름 날짜 조회 추천
    442670
    베오베 조건 풀렸어요~!!!! [32] Cache 21/07/29 09:59 11139 137
    376885
    코딩은 배웠는데 익숙하지 않을 때?!? [61] 음머~ 17/11/24 08:44 25844 275
    371584
    전공자, 비전공자, 국비학원출신 구직 시 인간이길 포기하지마세요. [20] DIABLO3 17/10/31 05:40 16601 117
    371537
    프로그래머들이 자주 쓰는 수신호 [24] 뒷북일까나 17/10/30 22:40 20276 174
    371376
    후임이 사고쳤다 - 1 [53] MioLiquid 17/10/30 08:23 13351 135
    370712
    LG 인공지능 에어컨이 사투리를 배워야만 했던 이유 [40] 사닥호 17/10/27 18:38 23960 202
    357005
    프로그래머 분들을 위해 팟캐스트 몇가지추천해 드립니다. [18] 자유해결사 17/08/16 12:19 12468 140
    356348
    0과 NULL의 차이점 [72] 구조와프레임 17/08/12 17:47 22674 142
    355551
    축하해 주세요.. 위로도 부탁드립니다. [75] 창작글 ROKJR2 17/08/08 18:14 13208 187
    354212
    이 게시판 왜이렇게 베오베가 없나요 [54] 나베 17/08/01 13:11 9984 147
    342206
    모 공공기관의 공지메일 [52] 펌글 REGENTAG 17/06/12 23:29 23928 134
    319829
    30대 중반 영화를 포기하고 인디 게임1년간 개발해 출시한 스토리.. [46] 아프미 17/04/12 07:46 15971 144
    315560
    공포의 신입사원 [48] RedPain 17/03/29 04:44 32315 150
    312547
    프로그래머 머리 터지게 하는법.jpg [98] 펌글 암것도몰라~ 17/03/18 22:20 31435 131
    311798
    코딩 입문하시는 분들께 팁 [37] IR 17/03/16 02:22 19194 161
    308040
    프로그래머의 아내라면 읽어둘만한 글 [61] 역병소각병 17/03/01 07:28 18820 149
    307968
    월요병이 있다는 사람 보면 이해가 안갑니다. [27] 앵두 17/02/28 22:12 18585 116
    306889
    Kill The Joy 노잼 방지 플러그인, 크롬 전용 [61] 창작글 메르시대위 17/02/24 08:41 12744 153
    294757
    천재적인 에러 핸들링 (js) [78] 펌글 navs 17/01/03 09:10 22709 145
    294488
    (프로그래머 필독, 약스압) 녹내장 관련 경험담... [40] 좋은아재 17/01/02 09:32 15220 162
    283067
    파이썬 공부중 질문있습니다. [41] 본인삭제금지 히버 16/11/22 02:56 11364 108
    275350
    [개인보관용] webcmd asp [클릭금지] [30] 저녁먹을래? 16/10/22 08:25 9915 102
    273791
    [코딩의 요정]은 실재합니다. [35] 창작글 중원_ 16/10/14 17:18 16983 134
    컴파일러 개발 근황 [39] 중용자 16/10/02 16:01 18020 115
    267315
    프로그래머가 명심해야 할 말.txt [31] 예비군2년차 16/09/10 16:09 20074 161
    262074
    자동화의 끝.... [52] 물어라이코스 16/08/17 09:29 17711 125
    [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [다음10개▶]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈