Skip to content

Daily reports

Jules Simon edited this page Jan 16, 2018 · 40 revisions

Daily reports

Tuesday 12/12

We have all read the documents. Our plan for the day is to assign tasks to each other (roughly). We will then do the step 4 together. We will get familiar with git and OCaml.

Team allocation

Front end

  • Etienne
  • Andrey
  • Sara

Back end

  • Jules
  • Théo
  • Ning

Testing

  • Should be done in parallel

Wednesday 13/12

Jules:

Finished the first version of the parser with arithmetic expressions. Wrote the associated tests. We should be able to start working on arm generation. Reworked on the parser to implement the correct structure.

Théo

Played with ARM cross-compilation and emulation. Worked with Jules on a first draft for arm generation

Ning

Started working on the very basic register allocation for arm allocation.

Sara, Andrey, Etienne

Started creating the new type for knormalisation. Creating tests. Our functions are working up to nested let reduction using the syntax type, we will update the type tomorrow.

For tomorrow

Brief with everyone on the state of the project. Make a git unstable branch. Close issues.

Thursday 14/12

Back end : ARM generation is starting to look better. Goal for today : write proper automated tests. The very basic algorithm should be done today

Front end: using the types Andrey created today we will work on type closure. Now nested let works using the knorm type. App(f, list) works. Eventually we postponed the closure for next week, we will work on asml code generation.

Adendum: backend Finished (?) arm generation -> Write strong tests -> Proof read everything, check it's compliant with all the specs -> Look into how to print ints in ARM

Friday 15/12

Front end

Andrey was thinking on conditionals. Sara was working on alpha conversion and tests (valid and invalid). Etienne started working on asml code generation (by ignoring closures for now).

Back end

Ning work on the spill everything register allocation. Jules worked on tests for arm generation + handling external function calls with the parser

Monday 18/12

Goals for the day : clean the project and put all files together. Build a snowman

Backend

Understand the way registers are called for function calls. Implement the spill everythin register allocation. Change the way we allocate the registers to generate a table. Think about linear scanning.

Frontend

Clean up the files, put everything into the common folder. Import the type from the backend instead of using our own frontend copy. Work on closures for function definitions (no free variables). Finished alpha-conversion. Added conditionals to K-normalization. Work on type checking.

Tuesday 19/12

Backend

Implement external function calls (up to 4 parameters and no return values). Merge all our different versions of code and make sure it works. Finish implementing command line options.

Frontend

Continuing work on typechecking. Finished GenEquations.
Continuing work on closures. Added support for function calls and put aside the closure support for now.

Main

Work on the command line options.

Wednesday 20/12

Backend

Make sure everything is working for friday. Do not add anything more Start working on documentation and testing.

Frontend

We will make more tests and clean up the code

Thursday 21/12

Backend

We keep working on tests. We should write tests for code generation as well as asml parsing. We will also write scripts to automate them. We will improve the makefile to call the tests. We will improve the repository hierarchy, add symbolic links.

Frontend

We write tests for the type checking.

Friday 22/12

Completed the autotests as well as automated make. Wrote documentation and checked that everything is working. We should not always use failwith. Let rec and fclosures are working now (un-nesting of let recs)

Monday 08/01

Backend

ARM generation

Start working on traducing let recs. We will start by considering only function that have no parameters. Then functions with less than 4 parameters. Then we will consider return values (for let recs and external functions). Then we will consider functions with more than 4 parameters.

Register allocation

Made an agreement on the input and output type of register allocation for linear scanning part and started working on it.

Frontend

Closure

Beginning of a fix to put the letrecs at the beginning of the program. For now they were placed randomly among lets.

ASML generation

Modified the type fundef in bsyntax.ml Modified the code in fasmlgen.ml to adapt to the new type and be prepared for internal function definition.

Beta folding and Constant folding

Starting to work

Knormalisation

Added some features

Tuesday 09/01

Backend

work on traducing function definitions. There is more work than expected because of the way we have to handle the stack. We are near completion. Work on traducing if then else statements. It seems to work with a few tests. We need more complete tests, then write the documentations. We should tidy the code a bit. Finish the computing of live intervals for variables (for linear scanning allocation).

Frontend

Starting to work on implementing type checking for function calls. Trying to merge Theo's work with Etienne's. Fix some issues with ASML generation. Closures are partially working. Added a suffixe to external functions in closure Working on a new version of print_asml

Wednesday 10/01

Backend

Finished work and tests for if then else statements, and written apropriate documentation. Starting to work on arrays : think about how to solve the problem, learn how to use syscalls. Tested live intervals algorithm and partially implemented linear scan register allocation.

Frontend

Closure and recursive function are still we need to take care of that later. But we can now output asml correctly. Redid the function that edit the name of internal and external functions. new print_asml done We will need to create a type for closure and add support in the backend For tomorrow : add if-then-else to asmlgen.ml

Thursday 11/01

Backend

Continuing implement linearscan register allocation.

Frotnend

Adding tuples & arrays.

Friday 12/01

Backend

Worked on implementing and testing memory allocation (mem operator). Worked on implementing the new() operator by using the previous work.

Frotnend

Adding remaining optimization functions: elimination of unnecessary definitions & inline expansion

Monday 15/01

Backend

Finishing linear scan register allocation. Work on improving the test scripts : they will now print the success rate the tests. Added tests in the backend (asml file). Went back to the original asml grammar (allowing ident_or_imm where they should be)

Frontend

Finishing extending asml generation to take into account the closures. Debugging closure conversion.