add DEF ARG and RET to VM instructs

This commit is contained in:
lyon1998 2021-10-29 09:57:50 +08:00
parent 5069eb683c
commit 85bfc2c9d8

View File

@ -16,7 +16,7 @@ static int32_t getLineSize(char* str) {
i++;
}
}
enum Instruct { NON, REF, RUN, STR, OUT, NUM, JMP, JEZ, OPT };
enum Instruct { NON, REF, RUN, STR, OUT, NUM, JMP, JEZ, OPT, ARG, DEF, RET };
static char* strs_getLine(Args* buffs, char* code) {
int32_t lineSize = getLineSize(code);
@ -51,6 +51,15 @@ static enum Instruct getInstruct(char* line) {
if (0 == strncmp(line + 2, "JEZ", 3)) {
return JEZ;
}
if (0 == strncmp(line + 2, "ARG", 3)) {
return ARG;
}
if (0 == strncmp(line + 2, "DEF", 3)) {
return DEF;
}
if (0 == strncmp(line + 2, "RET", 3)) {
return RET;
}
return NON;
}
@ -134,6 +143,10 @@ Arg* pikaVM_runAsmInstruct(PikaObj* self,
Arg* arg = arg_copy(obj_getArg(self, data));
return arg;
}
if (instruct == ARG) {
Arg* arg = arg_copy(args_getArg(localArgs, data));
return arg;
}
if (instruct == JMP) {
*jmp = fast_atoi(data);
}