Esempio n. 1
0
void execute_instr(instr_s * instr){
	switch(instr->opcode){
		case assign_v: execute_assign(instr); break;
		case call_v: execute_call(instr); break;
		case funcenter_v: execute_funcenter(instr); break;
		case funcexit_v: execute_funcexit(instr); break;
		case pusharg_v: execute_pusharg(instr); break;
		case add_v: execute_arithmetic(instr); break;
		case sub_v: execute_arithmetic(instr); break;
		case mul_v: execute_arithmetic(instr); break;
		case div_v: execute_arithmetic(instr); break;
		case mod_v: execute_arithmetic(instr); break;
		case jump_v: execute_jump(instr); break;
		case jeq_v: execute_jeq(instr); break;
		case jne_v:execute_jeq(instr); break;
		case jgt_v:execute_cmp(instr); break;
		case jge_v:execute_cmp(instr); break;
		case jlt_v:execute_cmp(instr); break;
		case jle_v:execute_cmp(instr); break;
		case newtable_v: execute_newtable(instr); break;
		case tablegetelem_v: execute_tablegetelem(instr); break;
		case tablesetelem_v: execute_tablesetelem(instr); break;
		default: return;
	}
}
void avm_calllibfunc(char *id){
    library_func_t f = avm_getlibraryfunc(id);

    if(!f){
        avm_error("unsupported lib func");
        executionFinished = 1;
    }else{
        topsp = top;
        totalActuals = 0;

        (*f)();

        if(!executionFinished)
            execute_funcexit(NULL);
    }

    return;
}
Esempio n. 3
0
void avm_calllibfunc(char* funcName){
	library_func_t f = avm_getlibraryfunc(funcName);	

	if(!f)
		{
		avm_error("unsupported lib func '%s' called!\n", funcName);
		executionFinished = 1;
		}
	else
		{
		topsp = top;
		totalActuals = 0;
		(*f)();
		if(!executionFinished)
			{
			execute_funcexit((instruction*) 0);
			}
		}
}