The architecture looks simple enough, but when I saw the source...<p><a href="https://github.com/gto76/comp-m2/tree/master/src" rel="nofollow">https://github.com/gto76/comp-m2/tree/master/src</a><p>...that's quite a bit more code than I was expecting.<p><a href="https://github.com/gto76/comp-m2/blob/master/src/specific_instruction.hpp" rel="nofollow">https://github.com/gto76/comp-m2/blob/master/src/specific_in...</a><p><a href="https://github.com/gto76/comp-m2/blob/master/src/specific_instruction.cpp" rel="nofollow">https://github.com/gto76/comp-m2/blob/master/src/specific_in...</a><p>IMHO this is a good example of how OOP can obfuscate. Over a dozen classes, all almost the same. This could easily be condensed into a single lookup table.<p>For comparison, here is a complete 8086 emulator, and it also includes some code to emulate other hardware of the PC:<p><a href="https://github.com/adriancable/8086tiny/blob/master/8086tiny.c" rel="nofollow">https://github.com/adriancable/8086tiny/blob/master/8086tiny...</a>