Hwk2 Due Wednesday, January 31. We will be using the DePaul MicMac simulator, in ~matloff/Pub/A*/Micro*/S*/D* Please read the file README.154b NOW, before going any further. The assignment is as follows: You will add a MULL ("multiply local") instruction to the Mac-1 instruction set, having the format 11111111zzzzzzzz. Its action will be ac:=ac*m[sp+z]. In other words, the contents of the ac will multiply the contents of the z-th element in the runtime stack. (Note: If you are not sure why the word "local" is used here, be sure to ask me.) The multiplier and multiplicand are to be interpreted as 2s-complement signed integers, while z is to be interpreted as a nonnegative number. Don't worry about overflow; just assume (for simplicity, not for practicality) that the users will never input numbers whose product is wider than 16 bits. Your design must allow the correct execution of any existing Mac-1 machine-language (not just assembly-langauge) program. The TA will formulate a Mac-1 test program (not given to you) that will (a) verify that your MULL works correctly, and (b) make sure that Mac-1's other instructions still work correctly. Be sure to check these yourself before submitting your work for grading. I will give valuable Extra Credit to the two individuals or paired-partners who have the fastest implementation of MULL. The criterion will be number of cycles used, starting with the MULL instruction fetch and ending just before the fetch of the next instruction. The TA will try a range of numbers and report to me whose implementations were fastest overall. By the way, this "contest" is in keeping with microcoding in general. In high-level programming, we usually don't care about small increases in speed; usually the clarity of the code is more important. But microcode directly affects the overall speed of the machine itself, so optimal code is of great value.