이것저것

디시설 RISC 프로세서용 컴파일러 rev2

ForceCore 2008. 9. 17. 14:38
http://eenet.snu.ac.kr/pds/dsd_compiler_set.zip
http://eenet.snu.ac.kr/pds/this_is_sparta.doc : 설명서

 가장 큰 팁은. 필자도 이것을 만든 지 오래 되어서 잘 모른다는 것이다(2008년 초의 겨울). 쓰고자 한다면 자신이 디버깅을 해나갈 근성이 있어야 한다. 미리 말해두건데, 컴파일러 자체에도 버그가 있을 수 있고(!), 디시설 프로젝트를 하다보면 프로세서 자체에 버그가 있을 수 있고, 코딩한 프로그램 자체에 버그가 있을 수 있다. 어느 것이 문제인지를 밝혀나갈 근성이 필요하다.

rev2 2008.12.18(목)

! 버그 몇 개 고쳤다. 드디어 유저 피드백이 들어왔으므로... 이 컴파일러가 나온지 약 1년만에, 이 컴파일러를 사용하여 프로젝트에 성공한 사례가 나타났다.

0. 정작 중요한 machine description이 없던 것을 보고받았다.
1. 그동안 -O2, -O1 을 주면 생겼던 segmantation fault가 고쳐졌다. shift operation들의 INSN이 잘못 되어서 그런 것이었다.

dsd_compiler_set.zip의 내용을 모두 gcc/config/i86 에 넣기 바란다. config 디렉토리는 i86이외에도 다른 architecture를 위한 vax, mips 등의 코어를 위한 디렉토리가 존재하는 곳이다.

주의: gcc 버전에 따라서, gcc-3.3.3을 컴파일 못 하는 경우가 있다. 이 컴파일러는 out-date되어버린듯 OTL

2. 그리고...a
어셈블러의 3rd.pl도 업데이트 되었다.
위의 설명서에서는
물론 이것을 그대로 제출하거나 verilog 코드로 직역해서 제출하면, 원래의 것과 다르기 때문에 디시설 교재의 샘플 코드가 엉뚱하게 동작할 것이다 -_-;;; 펄을 알아들을 수 있는 능력이 있다면 각 스크립트를 조정해서 원래 교재의 것대로 하드웨어를 구성해도 이상 없게 동작하도록 만들 수 있을 것이다.
이렇게 적혀 있는데, 3rd.pl을 필자가 조금 수정해서 하드웨어를 고치는 수고를 하지 않아도 제대로 동작하도록 만들었다. 소프트웨어적 차원의 해결...

1st.pl도 업데이트 되었다.
global variable로 된 array를 access할 때 memory offset계산을 하는 assem code를 제대로 소화할 수 있게 되었다.

즐거운 프로젝트가 되기를...