컴파일러, 어셈블러 질문

조회수 432회

초보여서 초보자다운 생각일지 모르겠지만, 어떠한 언어가 컴파일러에 의해 컴파일이 된다고 가정했을때, 그 언어를 컴파일해주는 컴파일러도 어떠한 언어로 구현되었을거고, 컴파일러가 작동되었을때 그 컴파일러를 컴파일해주는 컴파일러가 있을거고, 그럼 컴파일러를 컴파일해주는 컴파일러의 컴파일러고 있을거고... 이런식으로 게속 반복적인 궁금증을 이어나가다가, 구글링을 통해서 컴파일러는 어셈블리어같은 기계어와 1:1 매칭이되는 언어로 구현되있거나, high 언어로 구현되었다고 해도, 결국 로우 언어로 컴파일되어서 정점을 찍는다는 사실을 접하게 되었습니다.(맞는건지는 모르겠음) 그래서 로우 언어인 어셈블리어에 대해서 좀 알아보았는데 결국 어셈블리어도 기계어는 아니고, 어셈블러라는 프로그램으로 변환해주어야 한다는걸 알게 되었고, 그럼 어셈블러는 어떤 언어로 구현되었지? 라는 궁금증이 생기게 되었고, 구글링을 해도 명쾨한 답이 나오지 않자, 대충 직빵으로 기계어로 코딩했겠지 라고 생각하고 넘기려고 하니 또 찝찝해서 이렇게 질문드립니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 찝찝할것 없습니다. 예상한대로 입니다. 핸드어셈블링을 했습니다. 그리고 어셈블러로 어셈블러를 개발했구요.

    아 어셈블러의 모든 코드를 핸드 어셈블을 하는 것은 아닙니다. 일부만 구현하여 0.1버전을 개발하고 그 구현된 어셈블러로 기능을 추가하여 0.2 버전을 만드는 식으로 개발이 가능합니다.

    사실 어셈블러는 mov, add 등 opcode 가 머신코드와 1대1로 매칭되기 때문에 그렇게 구현이 어려운 것은 아닙니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)