联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codehelp

您当前位置:首页 >> C/C++程序C/C++程序

日期:2021-05-13 08:15

Week 22/24 Assessed Coursework
C/DEBUGGING
Deadline Friday Week 24 (14/5/21, 16:00)
In week 20, you worked on the task of implementing a C function which translates MIPS assembly
code into bytecode. You task for the SCC.150 week 24 coursework is to extend the code and
implement an exec_bytecode function, to complete your MIPS CPU emulator. The function should
read the bytecode generated by the make_bytecode function and stored in the integer array
text. Your program should unmarshal 32-bit instructions and modify appropriately the state of
the registers contained in the registers integer array and the pc global variable. Your
implementation should support the following instructions:
NOP - no operation, ADD - addition, ADDI – addition immediate ,
ANDI - bitwise immediate and, SRL - shift right logical, SLL - shift left logical,
BEQ - branch on equal, BNE - branch on not equal
Your implementation should manipulate the pc register value and emulate addresses in the text
memory area (0x00400000 – 0x1001000, start from address 0x00400000) and should provide a way
to terminate the execution of a program (e.g. nop instruction).
Important notes:
? Marks will be awarded only for the exec_bytecode function implementation and any new
functions that you will define/implement to improve code readability.
? You should use the update template, which can be found at
https://modules.lancaster.ac.uk/draftfile.php/465779/user/draft/55386476/emulator_w24.
zip to implement your solution, which contains a correct implementation of the
make_bytecode code.
Figure 1 Output of the MIPS emulator when running the Ethiopean multiplication algorithm with input the number 5 and 5.
Marking Scheme
Aspect Weighting
Functionality 60%
Code elegance, clarity, organization 30%
Self-marking 10%
Functionality
A+ Registers are handled correctly in all cases, there is a method to terminate the
program, the emulator executes correctly complex MIPS programs.
A The program can parse and execute branch instructions.
B I-type instructions are correctly parse and executed (addi, andi).
C R-type instructions are correctly parsed and executed (add, srl, sll).
D Program is read from the int array, a loop is implemented to execute the program
(program counter is used), code is executed based on instruction opcode and func
fields.
(*) This is an example of a marking scenario and marks are awarded proportionally for each
functionality. If you code only implements the addi and andi insutrctions and a simple loop, then you
will get a C.
Comments/clarity/organization
A Clear structure (and helpful comments) about variable use. Well commented
throughout. Spaced and organised for clarity. Appropriate use of function to organize
code.
B Good use of comments. Reasonable organisation, can follow program reasonably well.
Variable use is sensible.
C Sparse or sometimes unhelpful comments. Some consistency in use of variables.
D No comments. Difficult to read code.
Self-marking
A Clear and concise, functionality is accurate, comments reflect marking criteria
B List of mostly accurate grades, comments are there but not entirely clear or
unnecessarily long, or functionality grade is slightly off
C Just a list of grades, mostly accurate (or close) but no explanation
D Just a list of grades, inaccurate

版权所有:留学生编程辅导网 2021,All Rights Reserved 联系方式:QQ:99515681 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。