[ overview | news | status | documentation | download | feedback | links ]


ARMphetamine is a project to create a fast and accurate ARM processor emulator. A technique known as "dynamic recompilation" will be used so that the highest possible speed can be achieved for emulated code - ARM code programs are translated into native code as they are being emulated. The current development platform is Linux/x86.

The code is currently being rewritten to aid support of the features which had to be left out of the original code due to time constraints. When it's back in shape, I promise it'll be better than ever before.

ARMphetamine supports, or will support:

There is currently no projected release date. It would be a foolish thing to try to guess. If you'd be interested in building an emulator around ARMphetamine or incorporating it in an existing project, feel free to get in touch.


22 November 2002

There's very much internal reorganisation of the ARMphetamine sources, so that now all the parts of it are separated into nice logical units. There are multiple makefiles for the different "personalities" that the emulator is capable of assuming (LART emulation, Riscose backend, etc.). There are even some basic instructions, in the README file.

21 September 2002

You might have noticed there hasn't been much news about ARMphetamine recently. I've been busy doing other things. In the small amount of time I've dedicated to the project, the focus has been attempting to boot a Linux kernel - this means quite a lot of fiddly code needs to be written and bugfixed. If I get it going, this will be the place I report it. If you have in-depth knowledge of ARM Linux or the SA-1100 chip, maybe you'd be interested in grabbing the code from CVS and hacking it a bit, I'd be grateful for help (in the form of patches, preferably). I'm using blob, kernels and ramdisk from the LART project.

The furthest it's got so far is (failing) to mount a root filesystem under interpretive emulation. To try it, obtain the right versions of blob, a kernel and ramdisk image from the LART page, name them appropriately and type "make lartrun" in a suitable environment. Enjoy!

Old news


Some preliminary (old!) comparative benchmarks are available:

Processor [recomp] Compiler/OS Platform Dhrystones/sec
ARMphetamine [off] GCC/NetBSD Linux/x86 5527
12MHz ARM250 Norcroft/RISC OS RISC OS/arm26 6169
ARMphetamine [on] GCC/NetBSD Linux/x86 34843
233MHz StrongARM GCC/NetBSD NetBSD/arm32 275482
450MHz AMD K6-2 GCC/Linux Linux/x86 823045

These benchmarks were obtained using the standard (if aging) "Dhrystone" program (higher numbers are better). As you may infer, the emulator currently runs somewhere around the speed of an ARM610 on my development machine. Performance increases are expected.


There are two main documents describing ARMphetamine. The first is older and more likely to be out-of-date, the second is the dissertation I wrote as part of the university project ARMphetamine was written for.


The preferred way of getting hold of ARMphetamine now is by anonymous CVS from Sourceforge. Follow this link for instructions. The modulename is "armphetamine".

You can download a tarball of the ARMphetamine source code here, but it might not be the absolute latest version.

Download armphetamine-0.2.tar.gz.



You can get in contact with me about ARMphetamine at If that doesn't work for whatever reason, you could try instead. I'd appreciate it if you didn't send mail in HTML format.

You can find more information about dynamic recompilation at Thanks to Neil Bradley for the web space!


A few links relating to dynamic recompilation and ARM emulation in general...

© Julian Brown, 1999-2002