#include "interpret.h" #include "interpret.sctx.h" struct inst tmp_prg[]= { {PUSH, 1}, {PUSH, 0}, {ST, EMPTY}, /* accum = 1 */ {PUSH, 1}, /* BEGIN: */ {LD, EMPTY}, {PUSH, 0}, {CMP, EMPTY}, {PUSH, 24}, {JEQ, EMPTY}, /* if(n == 0) then goto FIN */ {PUSH, 0}, {LD, EMPTY}, {PUSH, 1}, {LD, EMPTY}, {MUL, EMPTY}, {PUSH, 0}, {ST, EMPTY}, /* accum = accum * n */ {PUSH, 1}, {LD, EMPTY}, {PUSH, 1}, {SUB, EMPTY}, {PUSH, 1}, {ST, EMPTY}, /* n = n -1 */ {PUSH, 3}, {JMP, EMPTY}, /* goto BEGIN */ {PUSH, 1}, /* FIN: (Useless instruction just for the end) */ {END, EMPTY} }; /* int stack[STACK_SIZE]; int mem[MEM_SIZE]={0, 1, 2, 3}; */ void set_specialization_context(struct inst **prg, int *pc) { *prg = tmp_prg; *pc = 0; for(prg_size = 0 ; tmp_prg[prg_size].opcode != END ; prg_size++) ; }