7 votos

¿Cuál es el conjunto de instrucciones más sencillo que tiene un compilador de C++/C para escribir un emulador?

Estoy estudiando la posibilidad de escribir un pequeño emulador de software que emule/ejecute instrucciones.

Lo más fácil sería inventar mi propio juego de instrucciones, pero he pensado que sería más divertido si escribo un emulador para un juego de instrucciones que ya tiene un compilador de C++/C.

¿Cuál es el conjunto de instrucciones/arquitectura más fácil que tiene un compilador de C++ y/o C (esperemos que sea estable)?

Por más fácil, me refiero al menor número de instrucciones.

6voto

Andrew Walker Puntos 9038

Espero algo con unas 50 instrucciones. Además, 32 bits y c++

La arquitectura "Beta" utilizada en la clase de núcleo 6.004 del MIT es un diseño RISC de 32 bits que a menudo se considera una simplificación del DEC Alpha. Se ha implementado de muchas maneras - personalmente en una FPGA - y en un momento dado hubo una versión antigua de GCC para ella, aunque en este momento puede ser difícil de desenterrar si nadie sigue trabajando con ella.

Un ejemplo de la documentación sobre arquitectura se encuentra aquí, el enlace completo se mantendrá ya que las versiones del curso que se publican en línea cambian de vez en cuando y puede valer la pena mirar varias ya que puede incluirse información diferente: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-004-computation-structures-spring-2009/labs/

2voto

Martin Puntos 343

Mi recomendación sería el LC-3 ("Little Computer 3"), que fue diseñado específicamente para que los estudiantes de ECE pudieran implementar una CPU básica en hardware. Es mucho más limpia y fácil de emular que cualquier arquitectura del "mundo real", como el desorden absoluto de instrucciones del x86. A Compilador C está disponible para él, aunque sin soporte de punto flotante (ya que el LC-3 no tiene una FPU).

Si quieres algo que se use activamente en el mundo real, prueba MIPS-I . El MIPS se sigue utilizando ampliamente en los sistemas embebidos, y es más conocido por ser utilizado en la Nintendo 64 y la Playstation. El emulador estándar para él es SPIM .

(Y, por supuesto, como se ha mencionado en otras respuestas, Knuth MMIX se hizo famoso por El arte de la programación informática aunque, a diferencia de los otros, hasta donde yo sé, nunca ha tenido una verdadera implementación de hardware).

0voto

chills42 Puntos 8260

Esta no es una respuesta completamente seria, pero puede ser adecuada para tu caso, si quieres mantener bajas las instrucciones a implementar para tu emulador.

De hecho, el x86 mov es una instrucción turing completa. E incluso hay una Compilador C para ello.

-1voto

Mario Fernandez Puntos 8974

Como has comprobado, lo más sencillo no es necesariamente lo más divertido ni lo más útil. Si estás haciendo esto para una experiencia de aprendizaje, puede que quieras mirar en MMIX que es la arquitectura RISC utilizada por Knuth para "El arte de la programación de ordenadores".

En otras palabras, una arquitectura explícitamente diseñada para el aprendizaje documentado en consecuencia, y con algunos de los programas de ejemplo más bien pensados para demostrar los conceptos de la ciencia de la computación para que usted pueda realmente hacer más con ella después.

https://en.wikipedia.org/wiki/MMIX

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X