COSC3302 Program-4 Due: 4/30/2013. SIMPLE-Language Interpreter Consider a SIMPLE-Language that contains only the following six instructions: V <- V+1 // The same variable V <- V-1 // The same variable IF V <> 0 GOTO L V1 <- V2 V1 <- V2 + V3 V1 <- V2 - V3 TASK: You are to write a program that will do the following: 1. Execute a given input program (consisting only of the above six instructions, and no others) that takes exactly two input values for X1 and X2, and 2. Print out the value of the only output variable Y when, in fact, the input program terminates. INPUT PROGRAM and INPUT DATA: Use the following input program and input data: Z1 <- X1 Z2 <- X2 Z4 <- Z4 + 1 Z3 <- Z3 + 1 [A] Z5 <- Z1 - Z2 Z6 <- Z2 - Z1 IF Z5 <> 0 GOTO B IF Z6 <> 0 GOTO C Y <- Z1 IF Z3 <> 0 GOTO E IF Z4 <> 0 GOTO A [B] Z1 <- Z1 - Z2 IF Z3 <> 0 GOTO A IF Z4 <> 0 GOTO E [C] Z2 <- Z2 - Z1 IF Z3 <> 0 GOTO A IF Z4 <> 0 GOTO E Use each of the following three pairs of inputs: 100 200 800 1800 1200 2800 Bonus Part (For up to 10 points) In addition, you will earn up to 10 bonus points by completing the following task in good shape: 1. Design an source input program in the same SIMPLE language to compute C(m,n) which is the number of combinations of n items out of m. For example, C(4,0) is 1 and C(4,1) is 4, C(4,2) is 6, C(4,3) is 4 and C(4,4) is 1. Note that C(m,n) = m!/(n!(m-n)!), So C(6,4) = 6!/(4!2!)=15. 2. As this program you design will take exactly two inputs (non-negative integers) it will just perpectly fits the interpreter you have. So, run your interperter for this new source program for each of the following five input pairs: 10 0 // result should be 1. 10 4 // result should be 210. 10 5 // result should be 252. 100 4 // result should be 3921225. 100 5 // result should be 75287520.