联系方式

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

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

日期:2021-05-12 11:12

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


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

python代写
微信客服:codinghelp