diff --git a/port/linux/test/VM-test.cpp b/port/linux/test/VM-test.cpp index cc4b3a6dc..ceb710924 100644 --- a/port/linux/test/VM-test.cpp +++ b/port/linux/test/VM-test.cpp @@ -17,7 +17,7 @@ TEST(VM, num1) { char* pikaAsm = pikaParseLineToAsm(buffs, line, NULL); printf("%s", pikaAsm); PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj); - PikaObj* globals = pikaVM_runAsm(self, pikaAsm); + Parameters* globals = pikaVM_runAsm(self, pikaAsm); obj_deinit(self); args_deinit(buffs); obj_deinit(globals); @@ -30,7 +30,7 @@ TEST(VM, a_1) { char* pikaAsm = pikaParseLineToAsm(buffs, line, NULL); printf("%s", pikaAsm); PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj); - PikaObj* globals = pikaVM_runAsm(self, pikaAsm); + Parameters* globals = pikaVM_runAsm(self, pikaAsm); ASSERT_EQ(args_getInt(globals->attributeList, (char*)"a"), 1); obj_deinit(self); @@ -45,7 +45,7 @@ TEST(VM, a_1d1) { char* pikaAsm = pikaParseLineToAsm(buffs, line, NULL); printf("%s", pikaAsm); PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj); - PikaObj* globals = pikaVM_runAsm(self, pikaAsm); + Parameters* globals = pikaVM_runAsm(self, pikaAsm); ASSERT_FLOAT_EQ(args_getFloat(globals->attributeList, (char*)"a"), 1.1); obj_deinit(self); @@ -60,7 +60,7 @@ TEST(VM, str_xy) { char* pikaAsm = pikaParseLineToAsm(buffs, line, NULL); printf("%s", pikaAsm); PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj); - PikaObj* globals = pikaVM_runAsm(self, pikaAsm); + Parameters* globals = pikaVM_runAsm(self, pikaAsm); ASSERT_STREQ(args_getStr(globals->attributeList, (char*)"a"), (char*)"xy"); @@ -77,7 +77,7 @@ TEST(VM, str_xy_space) { char* pikaAsm = pikaParseLineToAsm(buffs, line, NULL); printf("%s", pikaAsm); PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj); - PikaObj* globals = pikaVM_runAsm(self, pikaAsm); + Parameters* globals = pikaVM_runAsm(self, pikaAsm); ASSERT_STREQ(args_getStr(globals->attributeList, (char*)"a"), (char*)"xy "); @@ -92,7 +92,7 @@ TEST(VM, ref_a_b) { PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj); Args* buffs = New_strBuff(); - PikaObj* globals = pikaVM_runAsm( + Parameters* globals = pikaVM_runAsm( self, pikaParseLineToAsm(buffs, (char*)"a = 'xy '", NULL)); globals = pikaVM_runAsmWithArgs( self, globals, pikaParseLineToAsm(buffs, (char*)"b = a", NULL)); @@ -109,7 +109,7 @@ TEST(VM, Run_add) { PikaObj* self = newRootObj((char*)"root", New_PikaMath_Operator); Args* buffs = New_strBuff(); - PikaObj* globals = pikaVM_runAsm( + Parameters* globals = pikaVM_runAsm( self, pikaParseLineToAsm(buffs, (char*)"a = plusInt(1,2)", NULL)); args_deinit(buffs); @@ -124,7 +124,7 @@ TEST(VM, Run_add_multy) { PikaObj* self = newRootObj((char*)"root", New_PikaMath_Operator); Args* buffs = New_strBuff(); - PikaObj* globals = + Parameters* globals = pikaVM_runAsm(self, pikaParseLineToAsm(buffs, (char*)"b = 2", NULL)); globals = pikaVM_runAsmWithArgs( self, globals, @@ -142,7 +142,7 @@ TEST(VM, Run_add_1_2_3) { PikaObj* self = newRootObj((char*)"root", New_PikaMath_Operator); Args* buffs = New_strBuff(); - PikaObj* globals = pikaVM_runAsm( + Parameters* globals = pikaVM_runAsm( self, pikaParseLineToAsm(buffs, (char*)"a = plusInt(1, plusInt(2,3) )", NULL)); @@ -167,7 +167,7 @@ TEST(VM, JEZ) { Args* sysRes = New_args(NULL); args_setErrorCode(sysRes, 0); args_setSysOut(sysRes, (char*)""); - PikaObj* globals = New_TinyObj(NULL); + Parameters* globals = New_TinyObj(NULL); lineAddr = pikaVM_runAsmLine(self, globals, pikaAsm, lineAddr); lineAddr = pikaVM_runAsmLine(self, globals, pikaAsm, lineAddr); lineAddr = pikaVM_runAsmLine(self, globals, pikaAsm, lineAddr); @@ -191,7 +191,7 @@ TEST(VM, JMP) { Args* sysRes = New_args(NULL); args_setErrorCode(sysRes, 0); args_setSysOut(sysRes, (char*)""); - PikaObj* globals = New_TinyObj(NULL); + Parameters* globals = New_TinyObj(NULL); lineAddr = pikaVM_runAsmLine(self, globals, pikaAsm, lineAddr); lineAddr = pikaVM_runAsmLine(self, globals, pikaAsm, lineAddr); __clearInvokeQueues(globals); @@ -215,7 +215,7 @@ TEST(VM, JMP_back1) { Args* sysRes = New_args(NULL); args_setErrorCode(sysRes, 0); args_setSysOut(sysRes, (char*)""); - PikaObj* globals = New_TinyObj(NULL); + Parameters* globals = New_TinyObj(NULL); lineAddr = pikaVM_runAsmLine(self, globals, pikaAsm, lineAddr); lineAddr = pikaVM_runAsmLine(self, globals, pikaAsm, lineAddr); lineAddr = pikaVM_runAsmLine(self, globals, pikaAsm, lineAddr); @@ -243,7 +243,7 @@ TEST(VM, WHILE) { printf("%s", pikaAsm); pikaMemInfo.heapUsedMax = 0; PikaObj* self = New_TinyObj(NULL); - PikaObj* globals = pikaVM_runAsm(self, pikaAsm); + Parameters* globals = pikaVM_runAsm(self, pikaAsm); EXPECT_EQ(args_getInt(globals->attributeList, (char*)"a"), 0); EXPECT_EQ(args_getInt(globals->attributeList, (char*)"b"), 1); obj_deinit(globals); @@ -258,7 +258,7 @@ TEST(VM, a_1_1) { char* pikaAsm = pikaParseLineToAsm(buffs, line, NULL); printf("%s", pikaAsm); PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj); - PikaObj* globals = pikaVM_runAsm(self, pikaAsm); + Parameters* globals = pikaVM_runAsm(self, pikaAsm); int res = args_getInt(globals->attributeList, (char*)"a"); obj_deinit(self); @@ -274,7 +274,7 @@ TEST(VM, a_1_1d1) { char* pikaAsm = pikaParseLineToAsm(buffs, line, NULL); printf("%s", pikaAsm); PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj); - PikaObj* globals = pikaVM_runAsm(self, pikaAsm); + Parameters* globals = pikaVM_runAsm(self, pikaAsm); float res = args_getFloat(globals->attributeList, (char*)"a"); obj_deinit(self); @@ -290,7 +290,7 @@ TEST(VM, a_jjcc) { char* pikaAsm = pikaParseLineToAsm(buffs, line, NULL); printf("%s", pikaAsm); PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj); - PikaObj* globals = pikaVM_runAsm(self, pikaAsm); + Parameters* globals = pikaVM_runAsm(self, pikaAsm); float res = args_getFloat(globals->attributeList, (char*)"a"); obj_deinit(self); @@ -311,7 +311,7 @@ TEST(VM, while_a_1to10) { char* pikaAsm = pikaParseMultiLineToAsm(buffs, line); printf("%s", pikaAsm); PikaObj* self = newRootObj((char*)"root", New_PikaStdLib_SysObj); - PikaObj* globals = pikaVM_runAsm(self, pikaAsm); + Parameters* globals = pikaVM_runAsm(self, pikaAsm); int res = args_getInt(globals->attributeList, (char*)"a"); obj_deinit(self); @@ -333,7 +333,7 @@ TEST(VM, mem_x) { char* pikaAsm = pikaParseMultiLineToAsm(buffs, line); printf("%s", pikaAsm); PikaObj* self = newRootObj((char*)"", New_PikaMain); - PikaObj* globals = pikaVM_runAsm(self, pikaAsm); + Parameters* globals = pikaVM_runAsm(self, pikaAsm); int res = obj_getInt(globals, (char*)"mem.x"); obj_deinit(self); @@ -361,7 +361,7 @@ TEST(VM, DEF_instruct) { PikaObj* self = New_TinyObj(NULL); int lineAddr = 0; int size = strGetSize(pikaAsm); - PikaObj* globals = pikaVM_runAsm(self, pikaAsm); + Parameters* globals = pikaVM_runAsm(self, pikaAsm); char* methodPtr = (char*)obj_getPtr(self, (char*)"test"); EXPECT_STREQ(methodCode, methodPtr); obj_deinit(self); @@ -380,7 +380,7 @@ TEST(VM, RET_instruct) { PikaObj* self = New_TinyObj(NULL); int lineAddr = 0; int size = strGetSize(pikaAsm); - PikaObj* globals = pikaVM_runAsm(self, pikaAsm); + Parameters* globals = pikaVM_runAsm(self, pikaAsm); Arg* returnArg = args_getArg(globals->attributeList, (char*)"return"); int num = arg_getInt(returnArg); EXPECT_EQ(num, 13); @@ -402,7 +402,7 @@ TEST(VM, RUN_DEF) { "0 RUN test\n" "0 OUT a\n"; PikaObj* self = New_TinyObj(NULL); - PikaObj* globals = pikaVM_runAsm(self, pikaAsm); + Parameters* globals = pikaVM_runAsm(self, pikaAsm); int num = obj_getInt(self, (char*)"a"); obj_deinit(self); obj_deinit(globals); diff --git a/port/linux/test/object-test.cpp b/port/linux/test/object-test.cpp index 03b1f746c..5fea9e6af 100644 --- a/port/linux/test/object-test.cpp +++ b/port/linux/test/object-test.cpp @@ -129,7 +129,7 @@ TEST(object_test, test3) { TEST(object_test, test6) { PikaObj* obj = newRootObj((char*)"test", New_PikaObj_test); - PikaObj* globals = obj_runDirect(obj, (char*)"res = add(1, 2)"); + Parameters* globals = obj_runDirect(obj, (char*)"res = add(1, 2)"); int32_t res = obj_getInt(globals, (char*)"res"); EXPECT_EQ(3, res); obj_deinit(obj); @@ -178,7 +178,7 @@ TEST(object_test, voidRun) { TEST(object_test, printa) { PikaObj* root = newRootObj((char*)"root", New_BaseObj); - PikaObj* globals = obj_runDirect(root, + Parameters* globals = obj_runDirect(root, (char*) "a = 2\n" "print(a)\n" @@ -212,7 +212,7 @@ TEST(object_test, obj_run_while) { " b = 1\n" " a = 0\n" "\n"; - PikaObj* globals = obj_runDirect(root, lines); + Parameters* globals = obj_runDirect(root, lines); EXPECT_EQ(obj_getInt(globals, (char*)"a"), 0); EXPECT_EQ(obj_getInt(globals, (char*)"b"), 1); obj_deinit(root); diff --git a/port/linux/test/sysObj-test.cpp b/port/linux/test/sysObj-test.cpp index e3b81a8ad..cf32bfd2b 100644 --- a/port/linux/test/sysObj-test.cpp +++ b/port/linux/test/sysObj-test.cpp @@ -7,7 +7,7 @@ extern "C" { TEST(sysObj, print) { PikaObj* obj = newRootObj((char*)"test", New_PikaStdLib_SysObj); - PikaObj* globals = obj_runDirect(obj, (char*)"print('hello world')"); + Parameters* globals = obj_runDirect(obj, (char*)"print('hello world')"); char* sysOut = args_getSysOut(globals->attributeList); int errCode = args_getErrorCode(globals->attributeList); printf("sysout = %s\r\n", sysOut); @@ -20,7 +20,7 @@ TEST(sysObj, print) { TEST(sysObj, noMethod) { PikaObj* obj = newRootObj((char*)"test", New_PikaStdLib_SysObj); - PikaObj* globals = obj_runDirect(obj, (char*)"printttt('hello world')"); + Parameters* globals = obj_runDirect(obj, (char*)"printttt('hello world')"); char* sysOut = args_getSysOut(globals->attributeList); int errCode = args_getErrorCode(globals->attributeList); printf("sysout = %s\r\n", sysOut); diff --git a/src/PikaObj.c b/src/PikaObj.c index 552d97f4a..043e8b459 100644 --- a/src/PikaObj.c +++ b/src/PikaObj.c @@ -403,8 +403,8 @@ PIKA_WEAK int __runExtern_contral(PikaObj* self, char* cmd) { return 0; } -PikaObj* obj_runDirect(PikaObj* self, char* cmd) { - PikaObj* globals = NULL; +Parameters* obj_runDirect(PikaObj* self, char* cmd) { + Parameters* globals = NULL; globals = pikaVM_run(self, cmd); goto exit; @@ -471,7 +471,7 @@ void obj_runNoRes(PikaObj* slef, char* cmd) { void obj_run(PikaObj* self, char* cmd) { /* safe, stop when error occord and error info would be print32_t */ - PikaObj* globals = obj_runDirect(self, cmd); + Parameters* globals = obj_runDirect(self, cmd); obj_deinit(globals); } diff --git a/src/PikaObj.h b/src/PikaObj.h index c1bf5983c..67cdcc12b 100644 --- a/src/PikaObj.h +++ b/src/PikaObj.h @@ -11,6 +11,7 @@ typedef struct PikaObj_t PikaObj; typedef PikaObj* (*NewFun)(Args* args); typedef PikaObj* (*InitFun)(PikaObj* self, Args* args); +typedef PikaObj Parameters; struct PikaObj_t { /* list */ @@ -68,9 +69,6 @@ int32_t class_defineMethod(PikaObj* self, char* declearation, void (*methodPtr)(PikaObj* self, Args* args)); -void obj_runNoRes(PikaObj* slef, char* cmd); -void obj_run(PikaObj* self, char* cmd); -PikaObj* obj_runDirect(PikaObj* self, char* cmd); int32_t obj_removeArg(PikaObj* self, char* argPath); int32_t obj_isArgExist(PikaObj* self, char* argPath); PikaObj* obj_getClassObjByNewFun(PikaObj* self, char* name, NewFun newClassFun); @@ -106,4 +104,8 @@ float method_getFloat(Args* args, char* argName); char* method_getStr(Args* args, char* argName); void method_returnArg(Args* args, Arg* arg); +void obj_runNoRes(PikaObj* slef, char* cmd); +void obj_run(PikaObj* self, char* cmd); +Parameters* obj_runDirect(PikaObj* self, char* cmd); + #endif diff --git a/src/PikaVM.c b/src/PikaVM.c index dd998634f..dd1bd4889 100644 --- a/src/PikaVM.c +++ b/src/PikaVM.c @@ -101,7 +101,7 @@ int fast_atoi(char* src) { } Arg* pikaVM_runAsmInstruct(PikaObj* self, - PikaObj* globals, + Parameters* globals, enum Instruct instruct, char* data, Queue* invokeQuene0, @@ -416,7 +416,7 @@ Arg* pikaVM_runAsmInstruct(PikaObj* self, return NULL; } -int32_t __clearInvokeQueues(PikaObj* globals) { +int32_t __clearInvokeQueues(Parameters* globals) { for (char deepthChar = '0'; deepthChar < '9'; deepthChar++) { char deepth[2] = {0}; deepth[0] = deepthChar; @@ -511,7 +511,7 @@ int32_t getAddrOffsetFromJmp(char* start, char* code, int32_t jmp) { } int32_t pikaVM_runAsmLine(PikaObj* self, - PikaObj* globals, + Parameters* globals, char* pikaAsm, int32_t lineAddr) { Args* buffs = New_strBuff(); @@ -580,7 +580,9 @@ char* useFlashAsBuff(char* pikaAsm, Args* buffs) { return pikaAsm; } -PikaObj* pikaVM_runAsmWithArgs(PikaObj* self, PikaObj* globals, char* pikaAsm) { +Parameters* pikaVM_runAsmWithArgs(PikaObj* self, + Parameters* globals, + char* pikaAsm) { int lineAddr = 0; int size = strGetSize(pikaAsm); args_setErrorCode(globals->attributeList, 0); @@ -608,17 +610,17 @@ PikaObj* pikaVM_runAsmWithArgs(PikaObj* self, PikaObj* globals, char* pikaAsm) { return globals; } -PikaObj* pikaVM_runAsm(PikaObj* self, char* pikaAsm) { - PikaObj* globals = New_TinyObj(NULL); +Parameters* pikaVM_runAsm(PikaObj* self, char* pikaAsm) { + Parameters* globals = New_TinyObj(NULL); globals = pikaVM_runAsmWithArgs(self, globals, pikaAsm); return globals; } -PikaObj* pikaVM_run(PikaObj* self, char* multiLine) { +Parameters* pikaVM_run(PikaObj* self, char* multiLine) { Args* buffs = New_strBuff(); char* pikaAsm = pikaParseMultiLineToAsm(buffs, multiLine); uint32_t asm_size = strGetSize(pikaAsm); - PikaObj* globals = pikaVM_runAsm(self, pikaAsm); + Parameters* globals = pikaVM_runAsm(self, pikaAsm); if (NULL != buffs) { args_deinit(buffs); } diff --git a/src/PikaVM.h b/src/PikaVM.h index d85c1055a..1696b0a30 100644 --- a/src/PikaVM.h +++ b/src/PikaVM.h @@ -2,16 +2,18 @@ #define __PIKA__VM__H #include "PikaObj.h" -PikaObj* pikaVM_run(PikaObj* self, char* pyLine); -PikaObj* pikaVM_runAsm(PikaObj* self, char* pikaAsm); -int32_t __clearInvokeQueues(PikaObj* globals); + +Parameters* pikaVM_run(PikaObj* self, char* pyLine); +Parameters* pikaVM_runAsm(PikaObj* self, char* pikaAsm); +Parameters* pikaVM_runAsmWithArgs(PikaObj* self, Parameters* globals, char* pikaAsm); + +int32_t __clearInvokeQueues(Parameters* globals); char* useFlashAsBuff(char* pikaAsm, Args* buffs); int32_t gotoNextLine(char* code); int32_t gotoLastLine(char* start, char* code); int getThisBlockDeepth(char* start, char* code, int* offset); -PikaObj* pikaVM_runAsmWithArgs(PikaObj* self, PikaObj* globals, char* pikaAsm); int32_t pikaVM_runAsmLine(PikaObj* self, - PikaObj* globals, + Parameters* globals, char* pikaAsm, int32_t lineAddr);