Depends on what you want to emulate.
If you want to emulate a CPU, then at the simplest level, you just need to write an interpreter from the emulated CPU into the native CPU.
If you're emulating a simple computer like a ZX Spectrum, you also need to get the timings right, and the display chip has to be emulated.
If you're emulating something complex like a Saturn or 3DO or something then if you need to ask, don't bother.
