스터디 중에
다음주 분석할 BYTE CODE를 다음과 같이 나누었습니다.
정수님
stack manipulation - dup ~ swap
control - areturn ~ tableswitch
OBJECT 관련 코드중에서
new
putfield
putstatic
수연
aritemetic - dadd ~ lxor
array - aaload ~ sastore
conversion - d2f ~ l2i
OBJECT 관련 코드 중에서
invokeinterface
invokespecial
invokestatic
invokevirtual
정우님
constant - aconst_null ~ sipush
sync - monitorenter, monitorexit
variable - aload ~ wide
OBJECT관련 코드 중에서
checkcast
getfield
getstatic
instanceof
bytecode.c 파일에 주석을 다는 형식으로 하되 표준 형식은 제가 예시를
올리기로 했는데요.. 오늘 몸상태가 좋지 않아서 ㅡ.ㅡ
정수님이나 정우님이 표준형식을 지정해 주시면 좋겠네여...
그리고 bytecode.c 파일을 분석하게 되면 결국은 intepreter 소스 분석이 돼어 버리니
bytecode.c 파일을 미리 분석해오지는 않는 방향으로 하는게 좋을듯 싶습니다...
댓글 4
-
이정우
2008.05.26 00:16
-
이정우
2008.05.26 08:34
/* --------------------------------------------------------------------- */
/*
* KVM Study
* DATE : 2008-05-26
* DESCRIPTOR : lunar
*
* Mnemonic : ldc
* Argument : x
* Description : Push x ( a constant int,float, or String)
* Example : Programming for the JAVA Virtual Machine( Page 65 )
* ldc "Hello, world" ; Push a String onto the Stack
* ldc 1.0 ; Push a float onto the Stack
* ldc2_w 2.7182818284D ; Push a double onto the Stack
* ldc2_w 1234567890L ; Push a long onto the Stack
* ldc 2 ; Push a int onto the Stack
*
* Programming for the JAVA Virtual Machine( Page 66 )
*
* ldc 5 ; Requires 2 bytes and a constant pool entry
*/
#if STANDARDBYTECODES
SELECT(LDC) /* Push item from constant pool onto the operand stack */
unsigned int cpIndex = ip[1];
CONSTANTPOOL_ENTRY thisEntry = &cp->entries[cpIndex];
pushStack(thisEntry->integer);
DONE(2)
#endif
이정우 입니다. 다음과 같이 정리를 했습니다. instruction은 생각했던 것보다 간단하군요. /*----- 이런 주석이 있는데 다음줄에다가 제목(?, KVM Study), 날짜, 작성자, Mnemonic, Argument, Description, Example 등을 적었으면 합니다. 다른 좋은 의견 있으시면 남겨주세요. 제가 이왕 정리하는거 좀 더 효과적으로 되었으면 합니다. 수고하세요~
-
이정우
2008.05.26 11:04
탭이 무시되었네요 ;;
오늘 내일 중으로 스샷이라도 찍어서 블로그에 올리지요.ㅎㅎ;; -
이정우
2008.05.28 09:56
.
일단 지금부터 자료를 좀 볼 것 같은데 조금이라도 정리가 된다면 포맷을 만들어 보겠습니다. 여기 게시판에 안올리면 아직 정리가 안된 것이라고 간주하셔도 될 것 같습니다.