The table below contains several examples of mira and ford specification files, as well as the source of the C functions that they describe. All the programs used are available in the bottom of the page. All the outputs were generated by a graph coloring version of the usage based counter register allocator. A description of this register allocator can be found in the Dragon's Book, page 541. Most of the programs can be compiled with the 12 registers available in the StrongARM architecture, a noticeable exception been the main function of ManyParameters.c.



Usage based counter
C Source MIRA FORD
Base1Sum - main - c Base1Sum - main - MIRA Base1Sum - main - FORD
Branches - isOdd - c Branches - isOdd - MIRA Branches - isOdd - FORD
Branches - main - c Branches - main - MIRA Branches - main - FORD
bubble - main - c bubble - main - MIRA bubble - main - FORD
bubble - initran - c bubble - initran - MIRA bubble - initran - FORD
bubble - bubble - c bubble - bubble - MIRA bubble - bubble - FORD
bubble - show - c bubble - show - MIRA bubble - show - FORD
bubble - rnum - c bubble - rnum - MIRA bubble - rnum - FORD
hanoi - Hanoi - c hanoi - Hanoi - MIRA hanoi - Hanoi - FORD
hanoi - main - c hanoi - main - MIRA hanoi - main - FORD
hanoi - ParseCmdLine - c hanoi - ParseCmdLine - MIRA hanoi - ParseCmdLine - FORD
ManyParameters - f - c ManyParameters - f - MIRA ManyParameters - f - FORD
ManyParameters - hash - c ManyParameters - hash - MIRA ManyParameters - hash - FORD
ManyParameters - main - c ManyParameters - main - MIRA ManyParameters - main - FORD
perm - FreeData - c perm - FreeData - MIRA perm - FreeData - FORD
perm - InitializeData - c perm - InitializeData - MIRA perm - InitializeData - FORD
perm - InsertItem - c perm - InsertItem - MIRA perm - InsertItem - FORD
perm - main - c perm - main - MIRA perm - main - FORD
perm - ParseCmdLine - c perm - ParseCmdLine - MIRA perm - ParseCmdLine - FORD
perm - Pop - c perm - Pop - MIRA perm - Pop - FORD
perm - PrintStack - c perm - PrintStack - MIRA perm - PrintStack - FORD
perm - Push - c perm - Push - MIRA perm - Push - FORD
perm - RemoveItem - c perm - RemoveItem - MIRA perm - RemoveItem - FORD
perm - visit - c perm - visit - MIRA perm - visit - FORD
perm - writeperm - c perm - writeperm - MIRA perm - writeperm - FORD
perm2 - main - c perm2 - main - MIRA perm2 - main - FORD
perm2 - visit - c perm2 - visit - MIRA perm2 - visit - FORD
perm2 - writeperm - c perm2 - writeperm - MIRA perm2 - writeperm - FORD
qsort - main - c qsort - main - MIRA qsort - main - FORD
qsort - initran - c qsort - initran - MIRA qsort - initran - FORD
qsort - qsort2 - c qsort - qsort2 - MIRA qsort - qsort2 - FORD
qsort - show - c qsort - show - MIRA qsort - show - FORD
qsort - rnum - c qsort - rnum - MIRA qsort - rnum - FORD

Benchmarks

Download it perm An implementation of a generator of permutations that uses a list to keep track of permutations already produced, due to Paul Griffiths.
Download it hanoi An implementation of the puzzle "Towers of Hanoi", due to Paul Griffiths.
Download it Base1Sum A simple program that sums up the characters given in the command line.
Download it Branches A program containing many branches. The path taken will depend on the name of the executable file.
Download it ManyParameters The main function of this program contain a large number of live variables, and its compilation is likely to produce many spills.
Download it Maze solver Pointer intensive maze solver program.
Download it Usenix Benchmark This benchmarks contains some C programs that put high register pressure on the allocator.
Download it Stanford Benchmark This is a set of eight small files implemented in the Stanford University. They contain well know algorithms such as quicksort and a solution to the queen's problem. They are useful to test recursive calls, array indexing and input/output operations.


Last update: April 10th, 2006.