Just to be fair, there are in Cog machine code simulation capabilities by using Bochs for intel and gdb 7.10 for arm32.
And there is also a starting point for testing the JIT.
However, we have seen that for this the opensmalltalk-vm contains a copy of bochs and gdb source code
And with Pablo we have thought this was a suboptimal (both regarding building and licencing���), so we started to look at alternatives.
That���s why we took a look at unicorn and llvm. Unicorn is ultimately based on qemu, which is fairly mature from our point of view.
There is not much to say about llvm :).
What is nice is that with a single set of bindings we can cover lots of platforms. E.g., no need for new bindings for arm64.
Aaand, with some little adjustments here and there, we have ~85% of 114 existing tests passing for arm32, x86 and x86-64.
<PastedGraphic-6.png>
Of course there are not many tests, and they are only testing the basic compiler (just instructions) and not the Jitting of methods.
But it���s a good start.
Now, also we were a bit picky about licensing:
- The llvm disassembler bindings are MIT.
- We have licensed the unicorn bindings as LGPL because Unicorn is GPL, and this would allow people to use the bindings without any requirements on licensing. However, any modifications to the bindings or unicorn itself should be further published as LGPL or GPL.
Guille