C 소스로부터 자바 바이트 코드를 생성하는 것에 대해.

체스맨의 이미지

개인적으로 자바나 C++ 또는 다른 언어들도 좋아하지만, C 를 가장 좋아합니다. 그래서, 스크립트 또는 바이트 코드로 실행 가능한 가벼운 C 컴파일러를 만드려는 생각을 해왔는데요... 만약 완성되면, 제가 작성한 C 코드를 그 C 컴파일러로 재귀적으로 실행해보면 재밌을 것 같다는 생각도 있구요.

기존에
EiC http://eic.sourceforge.net/
Ch http://www.softintegration.com/
CINT http://root.cern.ch/root/Cint.html

등과 같은 C 인터프리터가 있긴 하지만, 제약이 있거나 상용이라 소스가 없는 경우가 있습니다.
그리고 무엇보다 직접 만들어보고 싶은 생각이 있구요. 이것을 만듦으로서 관련 제반 기술에 의해 제가 진행 중인 프로젝트에도 도움이 될 것 같네요.

이 구현의 목표는 임의 응용프로그램에서 C 코드를 실행하는 기능을 제공하기 위한 것입니다. 그래서, 최적화가 잘 되어 실행이 빠른 코드를 생성해내는 것보다는, 즉시 실행하고 결과를 확인해볼 수 있는 것이 주안점입니다.

아무튼 기왕이면 바이트 코드를 자바 바이트 코드로 생성할 수 있으면 좋겠다는 생각을 했습니다. 그렇게 되면 이미 개발된 JVM/JIT 을 이용할 수 있을테니까요. 그래서, 찾아보니 AMPC 라는 제품이 있네요.

http://www.axiomsol.com

만일 같은 일을 하는 C 와 자바 코드가 동일한 성능을 나타낸다면 매우 의미있는 제품이 될 것 같습니다. 저 홈페이지에 Telekom Malaysia 가 AMPC 를 사용했다는 것을 보면 상용 제품에 쓰일 수 있을만큼 성능도 뒷받침 되는 것 같네요.

기술적으로 궁금한 것은 메모리 할당과 구조체 구현(임의 옵셋에서 임의 크기의 값을 얻어오는 것)에 대한 것입니다. 저는 아직 자바 바이트 코드에 대해 적절히 파악하고 있지 못해서 구체적인 아이디어를 갖기는 힘드네요.

저 제품에 대한 여러분들의 생각이나, 기술적인 부분에서 의문점 및 해결 방안 ( 바란다면 자바 바이트 코드에 대한 구체적인 예까지 ) 등이 토론 되었으면 좋겠습니다.

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

닷넷 어셈블리를 생성하는 것도 괜찮겠네요. :)

feanor의 이미지

http://www.xwt.org/mips2java/ 프로젝트를 보시면 흥미로울 겁니다.