You're welcome too.
Right, but this one is unsuitable because it does dynamic translation. �Because the Squeak VM has a moving garbage collector and because, when simulating, the entire Cog heap, including generated machine-code, lives in a single ByteArray, the machine code generated by Cog, when simulating, can move. �So the interface between the processor simulator and the generated machine code and memory must be based on virtual addresses. �I'm pretty certain that a JIT like QEMU will use real addresses and so its own code generation would get confused by any movements of the Cog heap ByteArray. �Hence it is I think better to stick with a simple interpretive simulator such as the
Armulator, and of course
Bochs. �BTW, the ARM is so simple that the core instruction set simulator in the ARM is only 1500 lines of C++ (including whitespace). �So another approach might be to implement ARM in Smalltalk, e.g. by back-porting the Armulator code, although I expect it'll be significantly slower than optimized C++.