xeye_ atsu
/
FRDM_RaVem_JVM
JVM test
Diff: ravem.h
- Revision:
- 6:b9d0d96b052f
- Parent:
- 5:047542b65d00
- Child:
- 7:2a384a077520
diff -r 047542b65d00 -r b9d0d96b052f ravem.h --- a/ravem.h Sat Aug 24 07:00:51 2013 +0000 +++ b/ravem.h Mon Aug 26 15:02:07 2013 +0000 @@ -15,97 +15,97 @@ // constant_pool //#define Constant_Type Value length (in bytes) -#define CONSTANT_Class 7 // 3 -#define CONSTANT_Fieldref 9 // 5 -#define CONSTANT_Methodref 10 // 5 -#define CONSTANT_InterfaceMethodref 11 // 5 -#define CONSTANT_String 8 // 3 -#define CONSTANT_Integer 3 // 5 -#define CONSTANT_Float 4 // 5 -#define CONSTANT_Long 5 // 9 -#define CONSTANT_Double 6 // 9 +#define CONSTANT_Class 7 // 3 +#define CONSTANT_Fieldref 9 // 5 +#define CONSTANT_Methodref 10 // 5 +#define CONSTANT_InterfaceMethodref 11 // 5 +#define CONSTANT_String 8 // 3 +#define CONSTANT_Integer 3 // 5 +#define CONSTANT_Float 4 // 5 +#define CONSTANT_Long 5 // 9 +#define CONSTANT_Double 6 // 9 #define CONSTANT_NameAndType 12 // 5 -#define CONSTANT_Utf8 1 // 4 or more (see 'length') +#define CONSTANT_Utf8 1 // 4 or more (see 'length') #define CONSTANT_MethodHandle 15 // 5 #define CONSTANT_MethodType 16 // 3 -#define CONSTANT_InvokeDynamic 18 // 3 +#define CONSTANT_InvokeDynamic 18 // 3 //stack type -#define Stack_Nothing 0 -#define Stack_CharType 1 -#define Stack_IntType 2 -#define Stack_DoubleType 3 +#define Stack_Nothing 0 +#define Stack_CharType 1 +#define Stack_IntType 2 +#define Stack_DoubleType 3 #define Stack_ConstantPool 4 //Thread State and Command -#define Thread_returned 0 -#define Thread_Active 1 -#define Thread_getStartMethod 2 -#define Thread_getInitMethod 3 +#define Thread_returned 0 +#define Thread_Active 1 +#define Thread_getStartMethod 2 +#define Thread_getInitMethod 3 #define Thread_getInitMethodWithStack 4 -#define Thread_init 5 -#define Thread_initIsDone 6 -#define Thread_inSleep 7 +#define Thread_init 5 +#define Thread_initIsDone 6 +#define Thread_inSleep 7 -// instruction code mnemonic code number of arguments -#define JAVA_nop 0x00 // 0 -#define JAVA_iconst_0 0x03 // 0 -#define JAVA_iconst_1 0x04 // 0 -#define JAVA_iconst_2 0x05 // 0 -#define JAVA_iconst_3 0x06 // 0 -#define JAVA_iconst_4 0x07 // 0 -#define JAVA_iconst_5 0x08 // 0 -#define JAVA_bipush 0x10 // 1 -#define JAVA_sipush 0x11 // 2 -#define JAVA_ldc 0x12 // 1 -//#define JAVA_ldc_w 0x13 // xxx -#define JAVA_ldc2_w 0x14 // 2 +// instruction code mnemonic code number of arguments +#define JAVA_nop 0x00 // 0 +#define JAVA_iconst_0 0x03 // 0 +#define JAVA_iconst_1 0x04 // 0 +#define JAVA_iconst_2 0x05 // 0 +#define JAVA_iconst_3 0x06 // 0 +#define JAVA_iconst_4 0x07 // 0 +#define JAVA_iconst_5 0x08 // 0 +#define JAVA_bipush 0x10 // 1 +#define JAVA_sipush 0x11 // 2 +#define JAVA_ldc 0x12 // 1 +//#define JAVA_ldc_w 0x13 // xxx +#define JAVA_ldc2_w 0x14 // 2 -#define JAVA_aload 0x19 // 1 +#define JAVA_aload 0x19 // 1 -#define JAVA_iload_0 0x1A // 0 -#define JAVA_iload_1 0x1B // 0 -#define JAVA_iload_2 0x1C // 0 -#define JAVA_iload_3 0x1D // 0 +#define JAVA_iload_0 0x1A // 0 +#define JAVA_iload_1 0x1B // 0 +#define JAVA_iload_2 0x1C // 0 +#define JAVA_iload_3 0x1D // 0 -#define JAVA_aload_0 0x2a // 0 -#define JAVA_aload_1 0x2b // 0 -#define JAVA_aload_2 0x2c // 0 -#define JAVA_aload_3 0x2d // 0 +#define JAVA_aload_0 0x2a // 0 +#define JAVA_aload_1 0x2b // 0 +#define JAVA_aload_2 0x2c // 0 +#define JAVA_aload_3 0x2d // 0 -#define JAVA_astore 0x3A // 1 +#define JAVA_astore 0x3A // 1 -#define JAVA_istore_0 0x3B // 0 -#define JAVA_istore_1 0x3C // 0 -#define JAVA_istore_2 0x3D // 0 -#define JAVA_istore_3 0x3E // 0 +#define JAVA_istore_0 0x3B // 0 +#define JAVA_istore_1 0x3C // 0 +#define JAVA_istore_2 0x3D // 0 +#define JAVA_istore_3 0x3E // 0 -#define JAVA_astore_0 0x4b // 0 -#define JAVA_astore_1 0x4c // 0 -#define JAVA_astore_2 0x4d // 0 -#define JAVA_astore_3 0x4e // 0 +#define JAVA_astore_0 0x4b // 0 +#define JAVA_astore_1 0x4c // 0 +#define JAVA_astore_2 0x4d // 0 +#define JAVA_astore_3 0x4e // 0 -#define JAVA_dup 0x59 // 0 +#define JAVA_dup 0x59 // 0 -#define JAVA_iadd 0x60 // 0 +#define JAVA_iadd 0x60 // 0 -#define JAVA_i2l 0x85 // 0 -#define JAVA_i2c 0x92 // 0 +#define JAVA_i2l 0x85 // 0 +#define JAVA_i2c 0x92 // 0 -#define JAVA_goto 0xa7 // 2 -#define JAVA_return 0xb1 // 0 -#define JAVA_getstatic 0xb2 // 2 -#define JAVA_getfield 0xb4 // 2 -#define JAVA_putfield 0xb5 // 2 +#define JAVA_goto 0xa7 // 2 +#define JAVA_return 0xb1 // 0 +#define JAVA_getstatic 0xb2 // 2 +#define JAVA_getfield 0xb4 // 2 +#define JAVA_putfield 0xb5 // 2 #define JAVA_invokevirtual 0xb6 // 2 #define JAVA_invokespecial 0xb7 // 2 //not imprement -#define JAVA_invokestatic 0xb8 // 2 +#define JAVA_invokestatic 0xb8 // 2 -#define JAVA_new 0xbb // 2 +#define JAVA_new 0xbb // 2 typedef struct { - int tag; + int tag; int index; int index2; int bc_num; //pointer of bytecode @@ -114,18 +114,18 @@ typedef struct { - int bc_offset; // offset of bytecode (this class starts here = bc_array[bc_offset]) - int code_offset; // offset of code (Now we translate here from bc_offset = bc_array[bc_offset+code_offset] ) - int code_length; // length of code - int stack_num; // number of stacks - int local_num; // number of local registers - int field_num; // number of field length - int myThreadNum; // Number of this thread(you must put #0 "main" method, and do not put #0 any other methods) + int bc_offset; // offset of bytecode (this class starts here = bc_array[bc_offset]) + int code_offset; // offset of code (Now we translate here from bc_offset = bc_array[bc_offset+code_offset] ) + int code_length; // length of code + int stack_num; // number of stacks + int local_num; // number of local registers + int field_num; // number of field length + int myThreadNum; // Number of this thread(you must put #0 "main" method, and do not put #0 any other methods) int threadCommand; // int threadArg; - int *local_reg; // local registers(malloc here) - int *op_stack; // operand stack(malloc here) numerics or CP num + int *local_reg; // local registers(malloc here) + int *op_stack; // operand stack(malloc here) numerics or CP num int *op_stack_type; // type of each stack,0:nothing 1:int,byte 2:long,float,double 3:See CP int *field_mem_reg; // Field (getfield and putfield) @@ -134,17 +134,19 @@ } class_st; extern int32_t methods_count; -uint8_t *bc_seek(int bc_num, int length); + +void bc_init(void); +char *bc_seek(int bc_num, int length); const_pool_t getConstantPoolInfo(int constant_num); const_pool_t seekConstClassNumString(int const_num); const_pool_t seekClassIndex(int const_num); const_pool_t seekNameAndType_name(int const_num); const_pool_t seekNameAndType_desc(int const_num); -class_st seekCodeArrtibute(class_st cl, char* method_name,int strlen); // int getIntegerFromOperandStack(class_st cl); char* getStringFromOperandStack(class_st cl); // +class_st seekCodeArrtibute(class_st cl, char* method_name, int strlen); class_st setStackFromConstantPool(class_st cl, int cp_num); class_st setIntegerToStack(class_st cl, int num); //