스크립트 언어

잡기 2003. 9. 5. 19:16
바이트 코드를 사용하는 C :) (C-Smile)을 임베디드에서 돌리기로 결정한 것이 한 달 전이었다. 씨스마일이란 이름이 귀여웠고 귀여운 이름에 비해 자바 스크립트의 장점과 씨 코드의 장점을 잘 섞어놓은 썩 괜찮은 '단일' 프로그램이다. 소스 코드도 깔끔하고. 프로그래밍하면서 미소를 지으라나? 러시아 프로그래머의 작품이었다.

퍼포먼스 테스트를 안 해봐서 사실은 두려움을 느끼고 있었다.

NT, 리눅스, arm 크로스 컴파일러에서 컴파일 했다. 후자의 두 버전은 컴파일러 버전이 다르고 gcc의 버그 때문에 몇 가지 귀찮은 일이 있어 포팅에 3시간쯤 걸렸다(세 버전을 컴파일 해야 하니까). 커널과 함께 일은 반이 끝났고 날짜는 이제 15일 가량 남았지만 셔츠깃을 잡아 당기는 일 외적인 요인 때문에 늦어지고 있다. 실제로 작업한 시간은 3일 정도 밖에 되지 않았다.

부트 코드는 다른 소스를 참고해서 새로 짜는 편이 나을 것 같다. meritech 소스는 tftp가 제대로 작동하지 않았고 mizi 것은 소스에서 할 수 있는 일이 별로...였다. 필요한 것은 usb download와 tftp와 커널 로드 정도.

메모리 맵을 작성했고 리퍼런스 회로를 검토해서 memory mapped i/o에 필요한 타이밍을 얻을 수 있는 방법을 찾아냈다. 그동안 골치가 좀 아팠다. 메모리 맵드 아이오가 아니면 속도를 낼 수가 없었다. 아이오 오퍼레이션을 NT의 오버랩드처럼 만들거나 백터 테이블을 사용하는 방식을 도입하면 기존보다 6배 정도 빨라질 것이다. 커널과 유저 프로세스 사이의 컨텍스트 스위칭을 현저하게 줄일 수 있으니까. 만들고 나면 꽤 귀여운 보드가 될 것이다. 꽤 귀엽고 플렉시블하고 강력한 보드. 잘 될까? 별 사고만 없으면. 대당 몇 억씩 하는 값비싼 기계를 고작 3명의 하드웨어 엔지니어와 2명의 소프트웨어 프로그래머로 6개월 안에 만드는 일이라 입이 찢어질 정도로 기쁜 도전이었다. 미친 듯이 일해야 하니까.

공동 작업을 진행하는 동안 wiki를 사용했다. wiki 이외에 대안이 없었다. 작업 내역은 페이지를 작성하는 동안 그 자체가 매뉴얼이자 리비전 히스토리이자 설계 스펙이 되는 것이다. 그것만 조합해도 매뉴얼 한 권이 나왔다. 오늘 125 번째 페이지를 작성했다.

일을 끝 마치고 편안히 음악을 듣는 것처럼 프로그래밍이 늘 기쁘고 즐거웠으면 좋으련만.
Beethoven, Violin Concerto in D, Op.61, Allegro ma non troppo (12MB, 26min)
,