Pigmeo Compiler ToDo

From Pigmeo Development Wiki

Jump to: navigation, search

This is the list of Pigmeo Compiler desired features that hasn't been implemented yet.

Contents

Frontend

  • Implement local variables and parameters as static variables (configurable)
  • Local variables and parameters treated as static can share memory with other local members of methods not called at the same time
  • Custom Attribute: ImplementsInternal (see MethodDefinition.IsInternalCall). A method which must be called when another method is calling an internal method (those without body and with InternalCall attribute)
  • Static constructors: We can know exactly which constructors will be called in the application's life, so it's much better to execute all of them before calling the EntryPoint

Optimizations

  • Add "volatile" attribute to all fields referenced from an interrupt
  • Inlinization. All methods smaller than a given amount of instructions should be inlinized
  • RunOnCompileTime. When all the parameters passed to a method are constants and it doesn't read or write a non-local variable, we can execute the method at compile time and replace the method call by its returned value.
  • Look for fields assigned but never read, so we can avoid compiling any write operation on them and save memory. If they're never read, they are not useful at all (except internal registers)
  • In case high level language compilers don't optimize it, we should remove consecutive writes to a field without intermediate reads or incoming jumps, because if we write something to a field and then we write again to it (without incoming jumps or reading it) the first assigned value is never used, so we can ignore it and save instructions

PIC backend

Optimizations

  • Remove consecutive jumps between banks (because there is no bank switch at all). Incoming jumps must be taking care of.

User Interfaces

  • Add color to console outputs
  • Improve "About Pigmeo" window
  • Simple GUI which is lanched for showing compilation progress, warnings, errors and messages. Useful for compiling from a development environment
  • Being able to run configuration panels alone from the command line (so we can configure Pigmeo and the compilation as if they were standalone applications)
  • Automatic bug reports (it doesn't work due to lack of public SMTP servers). See https://sourceforge.net/tracker/index.php?func=detail&aid=2010478&group_id=223854&atid=1059950
Personal tools