모바일 오유 바로가기
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 : programmer_18575
    작성자 : 중용자
    추천 : 16
    조회수 : 1146
    IP : 182.228.***.202
    댓글 : 39개
    등록시간 : 2016/10/01 17:48:23
    http://todayhumor.com/?programmer_18575 모바일
    컴파일러 개발 근황
    예전에 컴파일러 개발한다고 글을 올린 이후로 오랬만에 컴파일러 개발 근황을 올립니다. <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 초과시 해당없음)

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

    번호 제 목 이름 날짜 조회 추천
    18579
    듀얼부팅 성공 ㅋㅋㅋ꺌꺌꺌꺌 [5] 자징자징거 16/10/02 05:45 553 0
    18578
    학생 프로젝트로, 게임을 만들고있어요. 힘들지만 즐겁네요! [1] 여우느님 16/10/02 03:49 425 2
    18577
    이클립스 질문있습니다!!! [7] 본인삭제금지 z_zzzzdasdas 16/10/02 00:11 302 0
    18576
    알고리즘 질문입니다. [3] 본인삭제금지 푸아 16/10/01 21:52 402 0
    컴파일러 개발 근황 [39] 중용자 16/10/01 17:48 1147 16
    18574
    C++ 예외처리문을 사용해도 프로그램은 무조건 죽는건가요? [6] 본인삭제금지 치쿠린 16/10/01 16:33 1204 0
    18573
    [본삭금]linux 소켓프로그래밍 도와주세요 ㅠ [1] 본인삭제금지 여친보고싶다 16/10/01 15:23 340 0
    18572
    UEFI 시스템에서 리눅스 듀얼부팅 하려는데 개빡치네요 [5] 자징자징거 16/10/01 14:52 370 1
    18569
    알고리즘 문제풀이 도움요청해봅니다. [6] 본인삭제금지 훗날닭집사장 16/10/01 00:27 531 0
    18568
    (이클리브) 질문 하나 있어요.. ㅠ [4] 본인삭제금지 z_zzzzdasdas 16/09/30 23:38 275 0
    18567
    이클립스 하나만 더 물어보겠씁니당 ㅠ [2] 본인삭제금지 z_zzzzdasdas 16/09/30 23:22 261 0
    18566
    이클립스 독학중인데요 정말 간단한거 질문있어요 [2] 본인삭제금지 z_zzzzdasdas 16/09/30 22:22 313 0
    18565
    포트란 소스코드를 가지고있으면 모바일앱으로 제작이 가능할까요? [3] 본인삭제금지 Nuke 16/09/30 20:07 610 0
    18564
    webdav->팟플레이어 스트리밍 관련해서 질문이 있습니다. [2] 본인삭제금지 ㄷㅂㅂㅂ 16/09/30 19:37 991 0
    18563
    엑셀 질문 여기서 해도 될까요?ㅠㅠ(본삭금!) 창작글본인삭제금지 -아리아드네- 16/09/30 14:42 555 0
    18562
    혹시 Rust사용하시는 분 계신가요? [1] 오늘인게유머 16/09/30 14:26 422 2
    18561
    친구 홍보글 쓰려다 태그 못써서 글도 못 쓰는 중 [3] cidmi 16/09/30 13:41 1272 0
    18560
    자바 abstract 질문 [1] 본인삭제금지 손블랙 16/09/30 13:24 1009 0
    18559
    빔에서 이맥스로... [2] 금연07132016 16/09/30 12:51 1389 0
    18558
    자바공부하는데 안드로이트 스튜디오 같은거요...-_-;; [3] 퐁당매니아 16/09/29 23:40 821 0
    18557
    최대값, 최소값, 평균 코드 [5] 본인삭제금지 JORDAN 16/09/29 23:23 452 0
    18556
    쇼핑몰 웹페이지 트래픽 관련 [3] 물어라이코스 16/09/29 18:46 1278 0
    18554
    홈페이지 만들 때 특정 레이아웃의 내용을 변경하고 싶습니다. [2] 본인삭제금지 상사꽃 16/09/29 17:10 510 0
    18552
    Active Standby 테스트 창작글 퓨리78 16/09/29 16:06 345 0
    18551
    17.3인치 노트북 가방 찾기 어렵네요; [1] ㅠ-ㅠ안돼 16/09/29 09:58 917 0
    18550
    오라클 데이터베이스 설치 오류가 납니다 ㅠㅠ 12C버전입니다 [1] 압어쥐 16/09/29 09:24 364 0
    18548
    아두이노 3색led와 버튼 3개를 이용한 회로도와 코드입니다. 도움!!! [5] 본인삭제금지 스물두울 16/09/29 04:40 1499 1
    18547
    (본삭금) SQL query 얼마나 비슷한가 비교 [9] 창작글본인삭제금지외부펌금지 소달구지 16/09/29 02:40 462 0
    18545
    (이클립스) 무엇이 잘못된거죵 [3] z_zzzzdasdas 16/09/29 00:33 299 0
    18544
    앱개발 외주 줬는데 연락이 두절되었습니다. [1] 물어라이코스 16/09/28 20:44 992 1
    [◀이전10개] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [다음10개▶]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈