¿Cómo se traduce la instrucción de ensamblaje de alto nivel en comportamientos de puertas lógicas de bajo nivel? [cerrado]

(Disculpe si este no es el mejor lugar para tal pregunta. Busqué un poco pero no encontré un lugar mejor).

Aprendí tanto el lenguaje ensamblador como el diseño básico de circuitos digitales en la universidad. Pero después de tantos años de codificar con varios lenguajes, creo que todavía extraño el conocimiento crítico in the middle ofde esas 2 partes:

¿Cómo se traduce la instrucción de ensamblaje de alto nivel en comportamientos de puertas lógicas de bajo nivel?

AFAIK, el nivel más bajo de una computadora es varios logical gates. Para una instrucción en lenguaje ensamblador como movl 10, eax, sé que un ensamblador la traducirá en una secuencia de 1/0. Pero, ¿cómo se traduce eso en actions of logical gates? Y escuché que existe el llamado microcódigo para procesadores. ¿Cómo se relaciona eso?

AÑADIR 1

Gracias a Eugene Sh. A continuación se presentan algunas referencias útiles:

Nand2 Tetris:

Te sugiero que tomes este excelente MOOC (el mejor sobre el tema que he visto). Responderá a su pregunta de la A a la Z. Y lo mejor de todo es que comenzará en menos de una semana.
@EugeneSh. Gracias por la info. Acabo de inscribirme en la lección. Parece prometedor. Será un viaje emocionante para tocar el alma de la máquina .
Y, por cierto, acabo de descubrir que hay una charla TED nand2terisque acompaña a esta lección. ted.com/talks/…
Tiene un sitio web dedicado con todos los materiales listos, si no te gusta "oficial".
Por supuesto, este es un tema apropiado, pero la pregunta que se hace va más allá del alcance de una respuesta de desbordamiento de pila: el sitio aquí existe para preguntas de alcance contenido, no pretende reemplazar recursos detallados, ni son preguntas que buscan punteros a recursos externos realmente considerados en el tema aquí.

Respuestas (1)

Realmente no puedes pasar de las instrucciones de montaje a las puertas. Entre las instrucciones en lenguaje ensamblador y las puertas reales, hay otro nivel de abstracción: los bloques de circuitos funcionales.

Las instrucciones en lenguaje ensamblador generan señales de control para una serie de bloques funcionales. Como mínimo, está el decodificador de instrucciones, la ALU para la aritmética y el secuenciador de programas para el flujo de instrucciones. Además, normalmente hay uno o dos generadores de direcciones para direccionar operandos. Pueden ser punteros simples, como en un 8051, o unidades aritméticas complejas, como en un DSP. A menudo tiene registros de canalización para permitir que las instrucciones fluyan más rápido. En estos días, también hay coprocesadores de coma flotante y otros.

El funcionamiento de cada uno de estos bloques se puede discutir extensamente. Así que realmente no podemos responder a esa pregunta.

El microcódigo era una forma de simplificar esos bloques, a expensas de la velocidad. El procesador es muy simple y las instrucciones complejas invocan una secuencia de microinstrucciones, preprogramadas en un "almacenamiento de control", que se ejecutan en el hardware simplificado. La técnica ya no se usa, ya que la velocidad se considera mucho más importante que las puertas. Las puertas son casi gratis.