Practical 2 questions
Name:
Section:
Name:
Section:
Read and perform the practical guide posted on the course website. Answer the questions in the practical guide. Numbers in square brackets (e.g. []) indicate the point value of each question. The annotations in parentheses refer to the list of "general practical requirments" from the practical page.
-
[5] (Need) Explain why the UJ and SB types have different sized immediates.
-
[7] (Need/Performance) Explain why assemblers should support some pseudoinstructions and how doing so increases the "performance" of assembly programming.
-
[8] (Performance) Use a flowchart to explain the overall flow of the main
assemble_asm()
method. Indicate each of the main "passes" of the assembler, explain in the flowchart what each one does in a few words. In a few sentences explain why the passes happen in this order . -
[9] (Correctness) Explain how you tested your individual pseudoinstruction methods. Your answer should include examples of assembly code with pseudoinstructions, the assembled instructions, and screenshots of a RISC-V simulator showing that the resulting code behaves as expected. You do not need to detail tests for all pseudos, but give one detailed example of this process. (This answer could be a bit longer than the others, but don't go crazy.)
-
[7] (Iteration/Correctness) What the biggest bug you found in your implementation during development. Explain how you had to change the code to fix this bug and how you tested that the bug was resolved.
-
[7] (Iteration) Explain how your instructor can see you iterated on your implementation. For example, you may point to several git commits with meaningful messages showing how you modified your implementation over time.
-
[7] What is the single biggest thing you learned from extending the assembler? Meaningful reflection required.
-
[0] What is the git commit ID for your final commit of your code. This is required to pass the assignment.