|
|
|
|
|
by sterlind
2011 days ago
|
|
they're really simple, in their basic form and for simple ISAs! it mostly boils down to keeping a bunch of registers and a giant switch statement. Each case simply implements the opcode. You have an array of bytes for the memory, and some emulated devices (e.g. trigger a screen update when the framebuffer memory gets changed, or set the instruction pointer to a handler when a key gets pressed.) It gets hard when instructions need lots of decoding, or you have 3d graphics hardware to emulate, or if you have something like a BIOS, or if you want to JIT. I'm actually eyeing implementing a console on an FPGA as my holiday project, with something like Chisel. |
|