C compiler를 만들려고 합니다.

feelpassion의 이미지

지금 32bit 5stage pipelined CPU Core를 설계하려고 합니다.
인원은 Core 설계에 3명, Assembler와 Compiler만드는 1명 이렇게 4명이서 하려고 합니다.
Assem 명령어는 약 35개 정도로 생각하고 있습니다. 아주 간단한 RISC Machine이죠.
C Compiler만드는데 지식이 너무 부족합니다. 일단 Assembler부터 만들어야 하는데... 어떻게 하는것이 가장 효율적으로 할 수 있는 것인지 알고싶습니다. 3개월 동안 올인하면 가능한가요?
모두 학부 4학년이고 실력은 동아리에서는 A급이라고 보시면 됩니다.
C Compiler 와 Assembler 를 만들기로 한 멤버는 Assem 과 C가 전공입니다. 그러나 Compiler에 대한 지식은 없습니다.
gcc Compiler의 소스를 분석해서 만드는 것이 빠를지 아니면 새로 Compiler를 만드는 것이 나을지도 궁금하구요...^^;;
고수님들의 조언부탁드립니다.

creativeidler의 이미지

3개월 동안 컴파일러에만 올인하면 성능이야 어찌되었든 C 컴파일러의 형태를 갖춘 것이 나올 수는 있을 것입니다. gcc 소스를 참조하는 것보다 그냥 컴파일러 이론을 이해하고 만드는 것이 나으리라 생각됩니다. gcc 소스는 너무 많은 기능을 포함하고 있죠. C 문법도 막상 만들려고하면 내용이 적지 않으니 일단 핵심 부분만 구현하는 것이 좋을 것입니다. 완전한 C 문법을 소화하려면 3개월로 부족할 수도..

근데 35개 정도의 instruction set이라면 차라리 CPU 설계 인원을 줄이고 컴파일러 인원을 늘리는 것이 좋을 것 같군요.

htna의 이미지

재밌는거 하시네요...
부럽습니다. 저런 재밌는일에 올인할 수 있는 때가..
^^

WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra

jachin의 이미지

5단 파이프라인에 32 bit 버스라... ISA 는 결정하셨나요? ^^

feelpassion의 이미지

Reg to Reg, Load-Store Architecture를 구현하기 위한 명령어들을 정확히는 아니지만 MIPS를 바탕으로 정하고 있는 중입니다. 32bit 중 간단하면서도 강력하고, 책으로 설명이 잘 되어있는 것이 MIPS인지라.... 머리 터지겠습니다. Interrupt를 구현해야할 지 말아야할지 외부 메모리를 써야할지 내부 메모리를 써고 말 것인지.... 어린이가 아니어서 정말 다행입니다..^^;;

남으로 창을 내겠소.
밭이 한참갈이 괭이로 파고 호미론 김을 메지요.
구름이 꼬인다 갈리있소. 새들의 노래는 공으로 들으랴오.
강냉이가 익거든 와자셔도 좋소.
왜 사냐건 웃지요.

오호라의 이미지

[Kenneth C. Louden, 컴파일러 제작 (원리와 설계)]를 한번 읽어보시고,

[mini C]정도의 소스를 분석하시는게 gcc보다 도움이 되실 겁니다.

저같은 경우는 C compiler -> VM -> Any Thing(?) 을 해보고 싶은데...

물론 퍼포먼스는 일단 배제햐는거죠. ^^;

혼자할려니까. 지루할 싸움도 될것 같고, 잼나는 것도 하루이틀이고...

결정적으로 멤버가 없네요. ㅡㅡ;

Hello World.

feelpassion의 이미지

감사합니다^^

남으로 창을 내겠소.
밭이 한참갈이 괭이로 파고 호미론 김을 메지요.
구름이 꼬인다 갈리있소. 새들의 노래는 공으로 들으랴오.
강냉이가 익거든 와자셔도 좋소.
왜 사냐건 웃지요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.