xeye_ atsu
/
FRDM_RaVem_JVM
JVM test
Diff: ravem.cpp
- Revision:
- 9:4ea7773ea2b0
- Parent:
- 6:b9d0d96b052f
diff -r d9e205196dfc -r 4ea7773ea2b0 ravem.cpp --- a/ravem.cpp Thu Aug 29 14:15:47 2013 +0000 +++ b/ravem.cpp Sat Sep 07 04:59:10 2013 +0000 @@ -637,6 +637,11 @@ setIntegerToStack(cl,getIntegerFromOperandStack(cl) + getIntegerFromOperandStack(cl)); break; + case JAVA_iinc: + cl.local_reg[*bc_seek(now_code + 1, 1)] = cl.local_reg[*bc_seek(now_code + 1, 1)] + (int8_t)(*bc_seek(now_code + 2, 1)); + now_code = now_code + 3; + break; + case JAVA_getstatic: now_code = now_code + 3; break; @@ -645,6 +650,7 @@ cl = getField(cl,(*bc_seek(now_code + 1, 1) << 8) + *bc_seek(now_code + 2, 1)); now_code = now_code + 3; break; + case JAVA_putfield: cl = putField(cl,(*bc_seek(now_code + 1, 1) << 8) + *bc_seek(now_code + 2, 1)); now_code = now_code + 3; @@ -660,6 +666,42 @@ cl = changeStackType(cl, Stack_CharType); break; + case JAVA_if_icmplt: + if(getIntegerFromOperandStack(cl) > getIntegerFromOperandStack(cl)){ + now_code = now_code +(int16_t)((*bc_seek(now_code + 1, 1) << 8) + *bc_seek(now_code + 2, 1)); // goto + break; + }else{ + now_code = now_code + 3; + } + break; + + case JAVA_if_icmpge: + if(getIntegerFromOperandStack(cl) <= getIntegerFromOperandStack(cl)){ + now_code = now_code +(int16_t)((*bc_seek(now_code + 1, 1) << 8) + *bc_seek(now_code + 2, 1)); // goto + break; + }else{ + now_code = now_code + 3; + } + break; + + case JAVA_if_icmpgt: + if(getIntegerFromOperandStack(cl) < getIntegerFromOperandStack(cl)){ + now_code = now_code +(int16_t)((*bc_seek(now_code + 1, 1) << 8) + *bc_seek(now_code + 2, 1)); // goto + break; + }else{ + now_code = now_code + 3; + } + break; + + case JAVA_if_icmple: + if(getIntegerFromOperandStack(cl) >= getIntegerFromOperandStack(cl)){ + now_code = now_code +(int16_t)((*bc_seek(now_code + 1, 1) << 8) + *bc_seek(now_code + 2, 1)); // goto + break; + }else{ + now_code = now_code + 3; + } + break; + case JAVA_goto: now_code = now_code +(int16_t)((*bc_seek(now_code + 1, 1) << 8) + *bc_seek(now_code + 2, 1)); break; @@ -707,6 +749,7 @@ return cl; } + class_st invokespecial_callFunction(class_st cl, int cp_num){ char* func_name = (char *)seekNameAndType_name(cp_num).stack_pt;