/* A skeleton of a Squeak-style bytecode interpreter, in order to see * how many instructions (and of what kind) are needed in the inner * loop. */ void send(int selector, int nargs); int stack[32]; int literals[32]; int main(int argc, char **argv) { char *instructions = argv[1]; char *ip = instructions; for (ip = 0; *ip; ip++) { register char insn = *ip; if ((insn & 0xf0) == 0xe0) { send(literals[(int)(insn & 0x0f)], 1); } else if ((insn & 0xf0) == 0xf0) { send(literals[(int)(insn & 0x0f)], 2); } } }