Next Generation Emulation banner
1 - 6 of 6 Posts

·
Premium Member
Joined
·
8,437 Posts
Discussion Starter · #1 ·
Lately I've been looking into this (or at least trying to). IMO in general there aren't many emulation tutorials on the net that cover advanced topics (at least not compared to the game programming area). Finding a tutorial or even an explanation for dynarec is hard enough, but finding anything on CPU virtualization (x86) is even worse. I'll be honest and admit that even though I know what it is, I don't at all understand how to implement it. I have no idea where to begin. Can anyone point me in the right direction? Thanks.
 

·
AKA snkmad
Joined
·
4,063 Posts
Well i think bochs and qemu are open-source.
Maybe you could take a look at them.
 

·
Premium Member
Joined
·
8,437 Posts
Discussion Starter · #5 ·
Bochs - That emulator implements everything completely in software.
Qemu - Too complex for most beginners.
VirtualBox - This one tries to explain how it works.
DOSBox - Didn't know that used a VM :)

Right now I'm starting to read up on how Intel's VMX registers work. These registers are designed to be used to "virtualize". This is some complex stuff (looks like). Intel's documentation on it is L-O-N-G! This will will be an interesting read. Thanks.
 

·
Emu author
Joined
·
1,490 Posts
DOSBox is not virtualization either.

Popek and Goldberg wrote about the necessary conditions for virtualization a long time ago. You can read about it here:

Popek and Goldberg virtualization requirements - Wikipedia, the free encyclopedia

Basically, until fairly recently x86 CPUs could not meet all of these requirements. Not all instructions were protected, particularly some that allowed reading protected state (as opposed to writing it). Since these additions were made, further tweaks were implemented to improve efficiency.

VMWare has also written some decent papers on the topic that you might want to look for.
 
1 - 6 of 6 Posts
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.
Top