Home - nonarkitten/monkeymonkeyjit GitHub Wiki

Welcome to the monkeymonkeyjit wiki!

This is an m68k on m68k JIT library -- for those not in the know, the m68k is the venerable Motorola 68000 processor used in a wide variety of classic home computers and game consoles. This is implemented as a real AmigaOS .library that can be loaded and shared between applications.

While monkeymonkeyjit is much faster than any other m68k emulation on the Amiga, it is not as fast as native execution available with Macintosh emulators and definately requires a strong 680x0 processor; a 68040 or better is recommended.

Currently, only the "classic" 68000 will be emulated. I have no intention of handling the 68020 or higher processors, 32-bit memory or floating point arithmetic.

Theory of Operation

My JIT is very simple; from an entry point we will copy and/or translate each 68000 instruction into a new buffer one at a time until we encounter a unconditional flow-control instruction, wrap the routine with the necessary entry and exit decorations and then call it. Generally, all instructions are left unmodified, with the exception to the addressing modes on operations that actually load and store data from RAM as well as branching instructions. This makes the translation engine very simple when compared to other JIT engines that must have equivalent opcodes to every possible source operation.