New features in SVN

From Pigmeo Development Wiki

Jump to: navigation, search

This is the entire list of features in SVN head not released yet.

These features should be added to the next release.


New features in trunk

  • The entire project is now compiled using NAnt instead of bash scripts. It's cleaner and really multiplatform
  • New utility: PMC

Calls the high-level-language compiler (C# compiler, VB.NET compiler, Nemerle compiler...), then Pigmeo Compiler and finally the assembler software for the target architecture.

  • New utility: PCG

Generates source code for templates or example applications. Supports multiple languages.

  • New utility: PLPTC-WinForms

Controls the Parallel Port pins individually from a friendly WinForms interface.

  • New utility: PSPC-WinForms

Serial Port terminal. Multiplatform WinForms interface.

New features in Pigmeo Compiler

  • Updated in the old compilation process:
    • while(byte > ConstantNumber)...
    • Now uint8/byte static variables are properly stored in RAM (when their location is not fixed using the custom attribute Location(), the backend looks for a free register in RAM and stores them there)
  • Frontend and backend almost completely rewritten. Features in the new compilation process:
    • Now PIR (Pigmeo Internal Representation) is used as intermediate language instead of a CIL Bundle.
    • Assign constants to uint8 static fields
    • Additions using constants and uint8 static fields
    • Adding two uint8 static fields
    • Infinite loops
    • Gotos
    • Internally implemented methods, written in managed code or generated on compile-time (written in assembly language)
    • Automatically inlines short methods
    • Automatically inlines single-call methods
    • Inlining methods marked manually as InLine
    • Removes methods never called
    • Generated assembly-language code extremmely well documented
    • Set fixed locations for static fields which don't have the Location() custom attribute
    • Remove dumb variables: LocalVariables that have a value assigned to them, that value never changes, and the original source doesn't change either, so we can directly use the value from the original source instead of passing it through temporal variables
    • Remove dead (never used) local variables
    • Assign constants to bits of 8-bit static fields
    • Remove operations that jump to the next instruction (they just waste time and memory)
    • Constantizations: Operations with constant parameters are now usually processed at compilation-time instead of run-time (because they always return the same result
      • When comparing two constant values, then jumping to another instruction
  • The paths to files others than the user application (summary file, error file, symbol table file, output assembly language code...) can now be passed as parameters from the command line
  • Prints compilation time when it ends

New features in Pigmeo Framework

  • A few classes for working with LEDs. Some are more efficient and others are more flexible
  • Support for simple push buttons
  • Class Motors.DC.L293 for controlling two motors using the L293x integrated circuit
  • Support for single seven-segment LED displays without decimal point and common cathode
  • Method Processor.Nop() generate consecutive no-operation instructions
  • Method Processor.Delay() keeps the processor doing nothing for a given amount of time (generated on compile-time based on the microcontroller's speed)
  • Extension method Byte.GetBit() implemented
  • New set of classes: Pigmeo.Internal.Reflection for reflecting .NET Assemblies easily (it's an abstraction layer on top of Mono.Cecil)
  • Basic physics libraries (Period, Frequency, Temperature...)
  • New library: Pigmeo.PC.dll
    • Class ParallelPort.cs for controlling the individual pins of the Parallel Port easily. Only works on Linux. Not tested on other Unixes. Doesn't work on Windows. Will be multiplatform in the future
  • New set of extension methods for UInt32
  • Byte-related extensions for UInt16 and UInt32

New features in Pigmeo.Devices

  • Device libraries completely reorganized. Now it's very easy to support new devices
  • Most of the code used by device libraries is shared by multiple devices
  • PIC Architecture:
    • Most registers supported
    • Basic support for Timer0 and ADC
    • Support for Registers in bank 1 in the PIC architecture
    • New models supported:
      • PIC16F59
      • PIC16F716
      • PIC16F722
      • PIC16F887

New features in PMC

  • New high level compilers supported
    • Support for Mono C# Compiler (gmcs)
    • Support for Nemerle (ncc)
    • Support for GNU PIC Assembler (gpasm)
    • Support for Boo (booc)
  • New assemblers supported:
    • GNU PIC Assembler (gpasm)
Personal tools