Factor/GSoC/2010/Port Factor to ARMMentorSkills required
LevelAdvanced Existing workFactor used to run on ARM, but the port is now unmaintained. Parts of the existing code should be easy to salvage. This includes the ARM support in the VM, and the ARM assembler in Factor. The ARM compiler backend will need to be rewritten because the compiler's architecture has changed significantly since the last port was completed. Technical detailsThis project will involve four tasks. The first three are highly technical and have pretty equal difficulty. The last one is more holistic and open-ended. Porting the VMThe VM needs to have support for the ARM architecture. There are two items of work that must be done here. First, updating
Second, updating
The existing CPU and OS-specific header files can be used as a guide. Porting the non-optimizing compilerThe Non-optimizing compiler has a backend for each CPU which defines sub-primitives in assembly. These are static assembly snippets which are concatenated together. The existing backends in Porting the optimizing compilerThe Optimizing compiler has a backend for each CPU which defines code generator templates for abstract instructions. These are more fine-grained than the non-optimizing compiler's sub-primitives. The code is in Optimizing space usage and performanceSince embedded systems have less memory and CPU resources than desktops or servers, performance is critical. Part of the project would involve identifying parts of Factor which are responsible for the biggest space and time overheads and improving the algorithms and implementation of the code to minimize this. ValidationThe project will be deemed to be complete when all core unit tests pass (running Benefit to the studentThe student will gain experience in porting a real-world compiler and VM to a new CPU architecture. Benefit to the communityFactor will be usable for a wider range of projects if it can run on embedded ARM systems. Challenges
This revision created on Fri, 6 May 2011 01:35:32 by akkartik (Rollback) |
|
All content is © 2008-2010 by its respective authors. By adding content to this wiki, you agree to release it under the BSD license. |