EST is testd ok in asm

This commit is contained in:
lyon 2021-12-24 21:59:00 +08:00
parent f39530cf39
commit 917ae2515f
2 changed files with 29 additions and 0 deletions

View File

@ -594,3 +594,22 @@ TEST(VM, if_else_) {
ASSERT_FLOAT_EQ(b, 1);
EXPECT_EQ(pikaMemNow(), 0);
}
TEST(VM, EST) {
char* pikaAsm = (char*)
"B0\n"
"0 EST a\n"
"0 OUT b\n"
;
PikaObj* self = newRootObj((char*)"", New_BaseObj);
pikaVM_runAsm(self, pikaAsm);
int a = obj_getInt(self, (char*)"a");
int b = obj_getInt(self, (char*)"b");
/* a is local, should not be exist in globals */
EXPECT_EQ(a, -999999999);
/* b is local, should not be exist in globals */
EXPECT_EQ(b, 0);
obj_deinit(self);
// obj_deinit(globals);
EXPECT_EQ(pikaMemNow(), 0);
}

View File

@ -171,6 +171,16 @@ Arg* pikaVM_runInstruct(PikaObj* self,
}
return arg;
}
if (instruct == EST) {
Arg* arg = obj_getArg(locals, data);
if (arg == NULL) {
return arg_setInt(NULL, "", 0);
}
if (TYPE_NULL == arg_getType(arg)) {
return arg_setInt(NULL, "", 0);
}
return arg_setInt(NULL, "", 1);
}
if (instruct == JMP) {
*jmp = fast_atoi(data);
return NULL;