Ostridge is an x86 emulator for linux. It is different from other emulators
in that it uses the existing linux rather than running a second copy of linux
inside the emulator. This should supposedly make it faster. Also, it uses a
significantly simplified x86 emulation which includes only user-mode instructions
and not stuff like segments which are not useful under linux.
A Fresh Start
Sorry that the project has not had any updates for a while, but I have been
busy with other things, and it seems to have hit a dead end anyway. Now it is
time to give up on the old way of doing things and write a proper modern JIT
compiler. This approach will make the emulator nice and fast, and this is
possible because most linux programs are compiled from c and thus nicely
structured and easy to JIT-compile. Also, this code will be possible to
optimize to take advantage of the fact that most cpu architectures have more
registers and so on.
There will be some documentation of my ideas for the JIT compiler's workings
put up here once I have the time for this.
The non-JIT version of ostridge is now officially abandoned. Work on the JIT
version is going to start Real Soon Now.
I have finally seen the light and decided to set up a cvs repository for storing the
project files in so that everyone can access the very latest developments as soon as
I think of them. You may access this repository on cvs.sf.net:
cvs -d:pserver:firstname.lastname@example.org:/cvsroot/ostridge login
cvs -z3 -d:pserver:email@example.com:/cvsroot/ostridge co ostridge
Ostridge 0.0.3 released today. It includes features such as a much improved
instruction set and portability to non-powerpc. Coming soon are features like
So, after a long and difficult battle with the complexity of the x86 instruction set,
I've decided to go for expediency instead of correctness. With this minor architectural
adjustment, I'll be able to do things much faster and easier. Specifically, in the emulator
flags are only explicitly calculated after the cmp instruction and they are flags like
"above" and "below" and "greater" and "less" and "sign" and "equal", which map more
directly to the jump instructions and are way easier for me to think about. Furthermore,
there will be a feature such that if a jmp is not preceded by a compare, it will be able
to backtrack somehow, and recalculate the flags. Or just die horribly instead of giving
weird unpredictable errors.
And a mandatory word from our sponsors:
but hey, they're nice people for letting me use their resources and stuff and
giving my project a wider audience.
Copyright © 2003 Arcady Goldmints-Orlov