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.
-
[3] (Need) Explain why the UJ and SB types have different sized immediates. (<100 words)
-
[3] (Need/Performance) Explain why assemblers should support some pseudoinstructions and how doing so increases the "performance" of assembly programming. (<100 words)
-
[4] (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 (<100 words). -
[4] (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.)
-
[2] (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. (<100 words)
-
[2] (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. (<100 words)
-
[2] What is the single biggest thing you learned from extending the assembler? Explain in 100 words or less. (<100 words)