¿Cuál es la implementación adecuada para la emulación de hardware?

Voy a programar unGame Boy emuladorZ80 es la CPU en caso de que alguien no esté familiarizado con ella), y mientras estaba haciendo mi investigación, encontré algunas cosas de las que no estoy tan seguro.

La primera fue que C es el lenguaje de programación a elegir aquí. No es tanto un problema, pero me gustaría escuchar su opinión desde el punto de vista de hoy. Incluso C ++ no fue recomendado.

Lo segundo que descubrí fue que todos usaban una función por cada código de operación. Eso parece lógico ya que es solo una llamada de función y probablemente mejor optimizada que tener una función para la instrucción "AGREGAR" y luego debe averiguar qué registros se utilizan aquí. ¿Pero qué tan necesario es eso hoy? ¿Es algo a lo que debería atenerme o debo reescribir mi emulador si me doy cuenta de que otra forma que podría ser más conveniente simplemente no lo corta (las consolas de juego más o menos modernas me vienen a la mente ahora)?

Además, es un poco desmotivador escribir una función para "agregar ese registro a este registro" una y otra vez. ¿Hay alguna forma de automatizar eso desde un mapa de código de operación o algo así?

Respuestas a la pregunta(3)

Su respuesta a la pregunta