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.

10voto

DmitrySandalov Puntos 129

Lo más fácil sería inventar mi propio conjunto de instrucciones

uh, ok, podríamos venir de muy diferentes experiencias aquí

Con más fácil me refiero a la menor cantidad de instrucciones.

Eso no es necesariamente lo más fácil de implementar. A menudo, tener más instrucciones es una buena compensación de complejidad en comparación con tener instrucciones más complejas.

Así que mi pregunta es, ¿cuál es el conjunto de instrucciones/arquitectura más fácil que tiene un compilador (espero que estable) de C++ y/o C?

Esto no parece un trabajo para C++, así que vamos a concentrarnos en C. (Si no entiendes la diferencia que supone tener el paradigma RAII de C++, puede que no estés en la posición óptima para diseñar tu propia ISA).

Puh, un conjunto de instrucciones de microcontrolador que es temprano, pero no también temprano (porque demasiado temprano implicaría "diseñado en torno a las limitaciones de la lógica digital de la época, como por ejemplo el 8051).

El AVR podría ser una buena opción, aunque personalmente no me gusta demasiado.

He oído que el Zilog Z80 es fácil de implementar (realmente hay varias implementaciones del Z80 por ahí), pero es bastante antiguo, y no muy cómodo (siendo de mediados de los 70).

Si realmente sólo quieres un núcleo pequeño para controlar lo que hace tu sistema, ¿por qué no elegir uno de los muchos diseños de núcleos de procesadores que existen?

Por ejemplo, RISC-V es una arquitectura de conjunto de instrucciones (bastante compleja), con compiladores maduros y muchas implementaciones de código abierto. Para un núcleo mínimo de FPGA, picoRV32 sería probablemente el núcleo elegido. Y en un ordenador, simplemente ejecutarías QEMU.

8voto

Abu Saleh Musa Puntos 106

Deberías echar un vistazo a la familia de microcontroladores PIC. El conjunto de instrucciones está limitado a 35 instrucciones diferentes, mientras que el controlador se sigue utilizando. Mira la hoja de datos en la página 228: Ficha técnica del PIC16F

El controlador utiliza 8 bits y también está disponible con menos periferia, pero eso no cambia nada para el conjunto de instrucciones.

7voto

Rishi Puntos 29

Necesitas un Ordenador de un solo conjunto de instrucciones (OISC)

Un ordenador de un conjunto de instrucciones (OISC), a veces llamado ordenador de conjunto reducido de instrucciones (URISC), es una máquina abstracta que utiliza una sola instrucción, lo que evita la necesidad de un opcode en lenguaje de máquina. opcode. Con una elección juiciosa de la única instrucción y con recursos infinitos, un OISC es capaz de ser un ordenador universal universal de la misma manera que los ordenadores tradicionales que tienen múltiples instrucciones. Los OISC han sido recomendados como ayudas en la enseñanza de la arquitectura de los ordenadores y se han utilizado como modelos computacionales en la investigación de la computación estructural.

No sé si existe un compilador. Pero sospecho que a algún estudiante desafortunado en algún lugar se le ha asignado la tarea de escribir uno.

7voto

Bluwr Puntos 13

Se conoce como conjunto de instrucciones MU0 a un conjunto de instrucciones sencillo de sólo 8 instrucciones utilizadas para la enseñanza. Se originó en la Universidad de Manchester y se utiliza para enseñar tanto la escritura de compiladores como el diseño de hardware. Hay varios documentos en línea que lo describen, incluidos los apuntes de clase de la Universidad de Manchester.

Bibliografía:

7voto

Josiah Puntos 537

Donald Knuth's Arquitectura MMIX tiene un conjunto de instrucciones RISC de 64 bits con 256 opcodes y compiladores de C existentes (GCC, mantenido activamente) y emuladores (mixvm, etc.).

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