Milestone 3: Back-End Complete

Project
January 22, 2021

In this milestone you submit the code of your compiler back-end, including a short report documenting its design.

Submission

You need to submit your ChocoPy project with a merge request on GitLab. The Git and Submissions documentation explains how to file such a request.

Deadline

The deadline for submission is January 22, 2021, 23:59.

Report

In your submission, include a short report in PDF format. The report (a free-form document, that does not have to be very long) should document what choices you have made in your implementation, and what transformation mechanisms you have used. Include at least descriptions of your approach to storage of intermediate values (registers or stack, register allocation), control-flow statements, calling convention, nested functions, translation of classes, and method invocation. If you have addressed any challenges, please make sure to note that in the report and explain your approach.

In your report use examples to illustrate your compilation scheme. That is, small ChocoPy programs (or program fragments) and the RISC-V code they are translated to by your compiler.

Grading

We grade your submission based on compliance with the ChocoPy dynamic semantics as defined in the reference manual.

Grading Components

The grade consists of two main components for which you get a grade on a 0 - 10 scale. The components are weighted as follows.

  • Compliance (weight: 0.8): To what extent does your back-end correctly implement the ChocoPy dynamic semantics? Compliance will be graded automatically based on a series of test programs and based on your report. Points are distributed as follows:
    • expressions: 2
    • statements: 2
    • basic functions: 1.5
    • nested functions: 1.5
    • objects: 3
  • Challenges (weight: 0.2): Address any challenge in the implementation and describe that in your report, illustrated with examples. The grade will weigh the difficulty of the challenge and the quality of the solution. The grade will be based on your description in the report and tests that you provide in your repository. Possible challenges to address:
    • register allocation
    • efficient register-based calling convention
    • memory management
    • optimization

Early Feedback

We provide early feedback for the correctness of your back-end. This feedback gives you an indication which parts of your implementation might still be wrong. It includes a summary of how many tests you pass and how many points you earn by passing them. You have 30 early feedback attempts. Please make your submissions to the milestone-3-submission branch.