Learn how to write an emulator
>> Want to really learn how a CPU works? Writing an emulator is the best way to learn about it.The best way to learn how a CPU works would be to write a CPU!  I.e., write HDL code for it and test in a hardware simulator.I have designed a miniature application-specific processor, a compiler* and IDE for it, a disassembler, and an emulator too.* To be more precise, I hacked a compiler for it using C# .net compiler.