2014년 11월 15일 토요일

Java bytecode interpreter

JAVA란 언어가 배우기도 쉽고 편한 언어라는 것을 많이들 알고 있을거라고 생각됩니다.
micro process에 그러면 VM(virtual machine)를 올려서 사용해보면 어떨까 생각한 사람도 있을건데 어떻게 하면 될까요?
oracle site에 가면 java edition이 여러가지 버전이 있습니다. 이미 작은 플랫폼에서도 포팅이 가능하도록 되어있긴합니다. 물론 돈을 내야됩니다. 아마 그쪽에서 제공하는건 VM을 제공하게 될겁니다.

만약 내가 사용하고 싶은 플랫폼에서 oracle에서 제공을 안해준다거나 돈이 없다면, 결국 필요한건 vm을 구현하고 개발은 oracle에서 배포하는 java로 빌드해서 jar파일을 사용하면 될겁니다.
bytecode는 말그대로 byte단위의 명령어 code입니다. 보통의 ARM이나 x86과 같은 일반적인 기기에서는 레지스터연산과 메모리쪽의 연산 조건문 분기문등만 있고 대부분 단순합니다. java에서는 특별하게 class를 생성하는게 존재하는게 있습니다. 아직까지 CPU에서는 class같은걸 hardwire로 표현하는게 문제가 있어서 java byte code를 h/w적으로 완벽하게 동작하는건 무리가 있는것 같습니다.

여기를 보면 6.5. Instructions 항목을 보면 존재하는 instruction들에 대해서 나옵니다. 갯수는 많지 않습니다.(갯수가 512개 보다 작게 되어있기 때문에 1byte로 표현하고 바이트 코드라고 불리웁니다.) 모두 구현을 해야하지만 간단하게 몇가지 항목을 빼고 구현해도 됩니다. 안쓰면 되는거니까, 그건 본인의 판단에 따른거고, 아래 home made vm도 있으니 참고하기 바랍니다.


그래서 개인적으로 작은 플랫폼에서는 Lua를 추천합니다. VM소스가 C로 구현되어있으며 굉장히 단순하지만 이식성이 좋다고 알려져 있습니다. 추천합니다.

댓글 없음:

댓글 쓰기