예제 #1
0
static struct KVirtualCode *MiniVM_RunVirtualMachine(KonohaContext *kctx, KonohaStack *sfp0, struct KVirtualCode *pc)
{
#ifdef USE_DIRECT_THREADED_CODE
	static void *OPJUMP[] = {
		OPDEFINE(OPLABEL)
	};
#endif
	krbp_t *rbp = (krbp_t *)sfp0;
	DISPATCH_START(pc);
	OPDEFINE(OPEXEC);
	DISPATCH_END(pc);
	L_RETURN:;
	return pc;
}
예제 #2
0
파일: tmp.cpp 프로젝트: goccy/gperl
int GPerlVirtualMachine::run(GPerlVirtualMachineCode *codes)
{
	static GPerlVirtualMachineCode *top;
	GPerlVirtualMachineCode *pc = codes;
	Reg reg_[MAX_CALLSTACK_SIZE];
	Reg *reg = reg_;
	GPerlEnv *callstack = createCallStack();
	GPerlObject **argstack = createArgStack();
	static char shared_buf[128] = {0};//TODO must be variable buffer
	static string outbuf = "";

#include "gen_label.cpp"

    DISPATCH_START();

	CASE(UNDEF), {
		GPERL_UNDEF();
		pc++;
		BREAK();
	});