view Bison-Flex/BasicCompiler-StackBase/vm_code.h @ 0:db40c85cad7a default tip

upload sample source
author nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
date Mon, 09 May 2011 03:11:59 +0900
parents
children
line wrap: on
line source

#ifdef	VM_ENUMDEF
#define	VMCODE0(code_, name_)	code_,
#define	VMCODE1(code_, name_)	code_,
#endif
#ifdef	VM_CREATE
#define	VMCODE0(code_, name_)	void name_()			{ statement.push_back(CVMCode(code_)); }
#define	VMCODE1(code_, name_)	void name_(int arg1)	{ statement.push_back(CVMCode(code_, arg1)); }
#endif
#ifdef	VM_EXEC
#define	VMCODE0(code_, name_)	void name_();
#define	VMCODE1(code_, name_)	void name_();
#endif
#ifdef	VM_EXECTABLE
#define	VMCODE0(code_, name_)	&vcpu::name_,
#define	VMCODE1(code_, name_)	&vcpu::name_,
#endif
#ifdef	VM_NAMETABLE
#define	VMCODE0(code_, name_)	#name_,
#define	VMCODE1(code_, name_)	#name_,
#endif

VMCODE1(VM_PUSHCONST,			PushConst)
VMCODE1(VM_PUSHVALUE,			PushValue)
VMCODE1(VM_POPVALUE,			PopValue)
VMCODE0(VM_POP,					OpPop)
VMCODE0(VM_NEG,					OpNeg)
VMCODE0(VM_EQ,					OpEq)
VMCODE0(VM_NE,					OpNe)
VMCODE0(VM_GT,					OpGt)
VMCODE0(VM_GE,					OpGe)
VMCODE0(VM_LT,					OpLt)
VMCODE0(VM_LE,					OpLe)
VMCODE0(VM_ADD,					OpAdd)
VMCODE0(VM_SUB,					OpSub)
VMCODE0(VM_MUL,					OpMul)
VMCODE0(VM_DIV,					OpDiv)
VMCODE0(VM_MOD,					OpMod)
VMCODE1(VM_JMP,					OpJmp)
VMCODE1(VM_JMPC,				OpJmpC)
VMCODE1(VM_JMPNC,				OpJmpNC)
VMCODE1(VM_PRINT,				OpPrint)
VMCODE0(VM_RAND,				OpRand)
VMCODE0(VM_HALT,				OpHalt)

#undef	VMCODE0
#undef	VMCODE1