[컴][폰][안드로이드] register-based 와 stack-based VM 의 의미

Register-based VS stack-based machine

Dalvik VM(virtual machine) 은 register-based
Java VM 은 stack-based machine


stack based machine 은 stack 을 이용해서 instruction 이 stack 을 이용해서 data 를 다루기 때문에
register 를 이용해서 data 를 다루는 instruction 을 가진 Dalvik 보다 많은 instruction 을 사용 해야 한다.

push r0
push r1
sub
pop r2


반면에 register-based 에서는 data의 destination register 에 대한 정보도 가지고 있어야 한다. 그래서 이 부분에 있어서는 stack-based 보다 code가 커진다.

sub r0, r1, r2

 

안드로이드에서 dex 가 만들어지는 과정

java -> compiled -> bytecode -> SDK toolset(.class -> .dex)

Android v2.3(GingerBread) 에서는 just-in-time compilation 을 지원한다.

 


http://www.iamroot.org/xe/32799 의 댓글 '선경문'

JIT 는 runtime 에 시스템의 정보를 알수 있어서 해당 머신에서 지원하는 SIMD 등의 특별한 명령어를 적극 활용할 수 있다고 한다.


JIT이기 때문에 고려해야 하는 최대 이슈는 '어떤 코드를 얼마만큼 컴파일 할 것인가?' 입니다.

 

 

http://www.iamroot.org/xe/32799 의 댓글 선경문

인터프리터에서 코드를 수행할 때 성능의 이슈는 명령어 디시패칭(Dispatching) 이 크다고 한다.

댓글 없음:

댓글 쓰기