Emulation Fundamentals - Writing A Basic x86 Emulator