#include #include "vm.h" extern unsigned *execute(unsigned *); #define INSN(X0,X1,X2,X3,X4,X5,X6,X7) \ (((X7) << 28) | ((X6) << 24) | ((X5) << 20) | ((X4) << 16) \ | ((X3) << 12) | ((X2) << 8) | ((X1) << 4) | (X0)) #define INS0(X,Y) ((X) | ((Y) << 2)) int main() { unsigned test[] = { INS0(CALL, 2), INS0(LITERAL, 0), INSN(0, HALT, 0, 0, 0, 0, 0, 0), INS0(LITERAL, 1), INS0(LITERAL, 1), INSN(PLUS, DROP, EXIT, 0, 0, 0, 0, 0) }; printf("ip=0x%08x\n", (unsigned) test); printf("ip=0x%08x\n", (unsigned) execute(test)); return 0; }