Qual é a implementação adequada para a emulação de hardware?

Vou programar umGame Boy emulador (Z80 é a CPU no caso de alguém não estar familiarizado com ela), e enquanto eu estava fazendo minha pesquisa, eu encontrei algumas coisas que eu não tenho tanta certeza.

O primeiro foi que C é a linguagem de programação para escolher aqui. Isso não é tanto um problema, mas eu gostaria de ouvir sua opinião do ponto de vista de hoje. Mesmo C ++ não foi recomendado.

A segunda coisa que descobri foi que todo mundo estava usando uma função por opcode. Isso parece lógico, já que é apenas uma chamada de função e provavelmente melhor otimizada do que ter uma função para a instrução "ADD" e então você precisa descobrir quais registradores são usados ​​aqui. Mas quão necessário é isso hoje? É algo que eu deveria manter ou devo reescrever meu emulador se eu perceber que uma outra maneira que pode ser mais conveniente simplesmente não o corta (consoles de jogos mais ou menos modernos aparecem em minha mente agora)?

Além disso, é meio desmotivador escrever uma função para "adicionar esse registro a esse registro" repetidas vezes. Existe uma maneira de automatizar isso a partir de um mapa de opcode ou algo parecido?

questionAnswers(3)

yourAnswerToTheQuestion