CPS 104 Problem PA MYMIPS Self-Moving Program (CRAWLER) Write a MYMIPS program which moves itself around memory, following "directions" which are read from standard input. The input consists of a sequence of integers. The program processes these integers one at a time. To process one input integer, assume the program and all its data are currently located at locations Q through Q+N of MYMIPS MEMORY. (Initially, Q==0). Upon reading an integer with value K, the program moves itself to locations Q+K through Q+N+K, and executes a "syscall break" instruction at loca- tion Q+K+16. It then repeats these steps until some integer is read that specifies a new value of Q less than 800 bytes away from the current value of Q. When such an integer is read, the program should exit silently. Your interpreter should be modified to execute the "syscall break" by executing printf( "Break at PC=%08X\n",PC); where PC holds the location of the "syscall break", and CON- TINUING execution with the next instruction. Your program must not contain any "sycall print-string" operations. Be certain that, after the program moves itself and executes the "syscall break", its further execution does not depend on any values stored in its previous locations. We will test that this is the case, by having our interpreter's "syscall break" operation store something into all locations other than an 800 byte region starting 16 bytes before the location of the "syscall break". Your program should test K for validity, and exit on K values that cannot produce a valid new location for the pro- gram; however, the program should provide for K values which are positive, or negative, as long as their magnitudes are acceptable. Part of your task is to get your interpreter to work correctly, also. You may test your program against our reference interpreter, but that interpreter will NOT have the required modification built in, so correctness of your program may be hard to determine while using it. You should submit the corrected interpreter along with your MYMIPS pro- gram. The members of the original team that developed the team interpreter should each submit independently modified versions of that interpreter.