Mercurial > hg > Members > nobuyasu > SampleSource
diff Bison-Flex/BasicCompiler-StackBase/EUC/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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Bison-Flex/BasicCompiler-StackBase/EUC/vm_code.h Mon May 09 03:11:59 2011 +0900 @@ -0,0 +1,46 @@ +#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