Concatenative topics
Concatenative meta
Other languages
Meta
Advanced
Factor 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 been changed since then.
This 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.
The VM needs to have support for the ARM architecture. There are several things to do here:
fixnum+
. The existing code in vm/cpu-{x86,ppc}.S
can be used as a guide.The 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 basis/cpu/{x86,ppc}/bootstrap.factor
can be used as a guide. The new code would go into basis/cpu/arm/bootstrap.factor
.
The first two tasks are mandatory in order to get Factor to do anything useful on the ARM. This task is optional, but it is an important part of making Factor usable on ARM. The 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 basis/cpu/{x86,ppc}/
can be used as a guide. The new code would go into basis/cpu/arm/arm.factor
.
Since 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.
The project will be deemed to be complete when all core unit tests pass (running test-all
in a freshly-bootstrapped image). Additionally, some level of performance analysis will be required to ensure that the resulting ARM port is performant enough to be used for real applications.
The student will gain experience in porting a real-world compiler to a new CPU architecture.
Factor will be usable for a wider range of projects if it can run on embedded ARM systems.
This revision created on Fri, 13 Mar 2009 04:14:09 by slava