[ 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.
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.
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!
Some preliminary (old!) comparative benchmarks are available:
|12MHz ARM250||Norcroft/RISC OS||RISC OS/arm26||6169|
|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.
You can get in contact with me about ARMphetamine at firstname.lastname@example.org. If that doesn't work for whatever reason, you could try email@example.com instead. I'd appreciate it if you didn't send mail in HTML format.
You can find more information about dynamic recompilation at dynarec.com. Thanks to Neil Bradley for the web space!
A few links relating to dynamic recompilation and ARM emulation in general...