#include "interpret.h" /* FACTORIAL accum -> mem[0] n -> mem[1] */ struct inst prg[]= { {PUSH, 1}, {PUSH, 0}, {ST, EMPTY}, /* accum = 1 */ {PUSH, 1}, /* BEGIN: */ {LD, EMPTY}, {PUSH, 0}, {CMP, EMPTY}, {JEQ, 22}, /* 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 */ {JMP, 3}, /* goto BEGIN */ {PUSH, 1}, /* FIN: (Useless instruction just for the end) */ {END, EMPTY} };