'JVM'에 해당되는 글 2건

  1. 2009.09.08 SimpleJVM #2. Operand stack.
  2. 2009.08.04 Nude Java #1. 개요

SimpleJVM #2. Operand stack.

|
JVM은 Java로 작성된 소스코드(Source codes)가 자바 컴파일러(Java Compiler)에 의해 생성된 바이트 코드(Bytecode)를 읽어 OS에서 작동을 시키는 것이다. 소스 파일은 ClassName.java라는 파일에 기록이 되고 컴파일을 통해서 ClassName.class파일을 얻게 되는데 JVM이 하는 일은 이 ClassName.class파일에 있는 바이트코드를 실행하는 일이다. 각 플랫폼에 맞는 JVM이 있다면 자바 언어를 이용해 작성된 코드는 JVM이 지원되는 모든 하드웨어에서 같은 결과를 얻어내는 것이며, 이러한 개념은 write once, run everywhere라는 말로 대변이 된다.

이 바이트 코드를 실행하는 개략적인 메커니즘(Mechanism)은 바이트 코드를 읽어서(한번에 한 바이트씩 읽어들인다) 코드를 판별한 뒤 JVM에 할당된 리소스(Resources)를 이용하여 처리한다.

## Operand stacks and Arrays for local variables. ##
JVM의 특징 중 하나는 Stack을 이용한다는 점이다. 바이트 코드내에서 한 바이트씩 읽혀진 것이 피연산자(Operand)이며 이 것을 연산하기위해 스택을 이용한다. 그 스택을 이르는 말이 Operand Stack이다.
이 오퍼랜드 스택의 구조는 pop과 push연산에 의해 선입후출(FILO)의 형태를 보이는 데이터 저장 구조 즉, 스택이다.

OperandStack 구현
OpndClass의 기본 골격은 다음과 같이 정의 할 수 있을 것이다.
class OpndClass {
OpndClass(int capacity) { ... }

int pop() { ... }

void push(int value) { ... }
/* 스택 작동 확인을 위한 함수 구현, 스택에서 2개의 값을 pop하여 더한 후 push */
void add() { ... }
}

OpndClass.java

다음의 명령어들은 스택만을 이용한 연산들이다.
iconst_<n>
iconst_m1, iconst_0, iconst_1, iconst_2, iconst_3, iconst_4, iconst_5
sipush, bipush
idiv, imul, iadd, isub

각각의 상세 설명은 다음의 링크에서 확인 해 볼 수 있으며 이 포스트에서는 iadd의 설명서(Instruction)를 보면서 자바에서 제공하고 있는 Instruction set을 읽는 법을 조금만 알아본다.


다음 글에서는 지역변수배열에 대해서 알아볼까 한다.

'iProgramming > iJava' 카테고리의 다른 글

SimpleJVM #2. Operand stack.  (0) 2009.09.08
클래스를 새로 정의하면  (0) 2009.08.26
Nude Java #1. 개요  (0) 2009.08.04
Trackback 0 And Comment 0

Nude Java #1. 개요

|

2007년 여름동안 3학년 2학기 프로젝트 과목겸 연구실내 프로젝트였던 Nude Java는 자바가상머신이 바이트코드를 읽어 실행하는 과정에서의 메모리 상태를 영상화 시켜 이해를 돕는 프로그램이다. Java Class Reader부터 시작해 Nude Java라는 이름 아래에 끝나기까지 수개월에 걸쳐 진행했다. 같이 팀을 꾸려서 진행했던 친구들은 다들 열심히 해서 진도를 뺄 무렵 나는 그나마도 따라가지 못하고 해매다가 마지막까지도 팀의 발목을 잡았던 참 뼈아픈 기억이 있는 프로젝트지만, 개강하기 전에 프로그래밍 연습도 좀 할겸 지금이라도 나름대로 정리해가면서 되새김질 해볼 수 있도록 하려한다.
또한 프로젝트를 진행하면서 참고했던 자료들과 앞으로 공부해나갈 순서를 간략히 첫장에 남겨두도록 하겠다.
또한 필요하게 될 프로그램의 설치법에 대한 것은 다른 곳에도 자세히 나와있으므로 내려받을 수 있는 곳만을 간단히 언급하고 지나가겠다.(필요한 것도 얼마 없긴 하지만...)

참고자료 및 사이트
Inside the Java(2nd) isbn:0071350934
Simple Real Time Java
Java Virtual machine specification book
JVM Instruction sets(attached)

Instruction set.pdf

Instruction set


덧붙이는 말
이 프로젝트를 자바 언어로 진행했던 관계로 개발도구가 필요하니 선 마이크로시스템즈사 홈페이지에서 다운로드 받으셔서 설치하시면 좋고, 프로그래밍할때 썼던 프로그램은 이클립스를 사용했습니다.
Java Software Develop Kit Standard Edition
Eclipse



'iProgramming > iJava' 카테고리의 다른 글

SimpleJVM #2. Operand stack.  (0) 2009.09.08
클래스를 새로 정의하면  (0) 2009.08.26
Nude Java #1. 개요  (0) 2009.08.04
Trackback 0 And Comment 0
prev | 1 | next