Quiero saber cómo se convierte un lenguaje de alto nivel en lenguaje de máquina. Si lo realiza un compilador, ¿en qué idioma está escrito el compilador?

Quiero saber cómo se convierte un lenguaje de alto nivel en lenguaje de máquina.

Es posible que desee comprobar esto:
¿Cómo convierte un compilador los lenguajes de programación de alto nivel en ensamblador? ¿Cómo se traducen los idiomas y se optimiza el código?

Si lo realiza un compilador, ¿en qué idioma está escrito el compilador?

Deberías leer sobre Bootstrapping.
Bootstrapping un idioma
¿Cómo funciona bootstrapping para gcc?
http://en.wikipedia.org/wiki/Boo…

Básicamente, digamos que desea escribir un compilador para un nuevo idioma llamado Zampa, y desea arrancarlo, es decir, usar un compilador escrito en Zampa para ejecutar programas de Zampa.
Entonces, para poder ejecutar el compilador de Zampa, también necesita escribir un compilador para él. Este compilador está escrito en una abstracción de bajo nivel, principalmente en lenguaje C o ensamblador. Una vez que tenga este compilador de bajo nivel, puede construir un compilador en Zampa. Este compilador de Zampa a su vez compilará sus programas de Zampa. ¡Así compilamos programas de Zampa usando un compilador escrito en Zampa! Increíble, ¿no es así?

Considere el compilador Java creado para ejecutar programas Java
1. Escriba un compilador en C para ejecutar el compilador de Java.
2. Utilice el compilador escrito en C para compilar y ejecutar el compilador de Java.
3. Ejecute programas Java utilizando el compilador Java.

Mira esto:
¿Cómo funciona el bootstrapping en el desarrollo del compilador?
Lea también sobre el proceso de arranque de sistemas operativos

Gracias a Jan Christian Meyer.

1. Puede escribir el compilador en cualquier idioma, pero se limita a algunas propiedades como el rendimiento, el tiempo de ejecución, la administración de memoria, etc.

2. C & C ++ sería el ideal para la mayoría de los casos debido a su rendimiento (hoy en día la mayoría de los sistemas operativos y lenguajes modernos usan c como base). Incluso podría escribir el compilador en lenguaje ensamblador e incluso binario (si puede). (antes de 1980 la gente solía escribir el programa en binario para mejorar el rendimiento y ahorrar memoria). Incluso hoy en día, puedes encontrar personas que editan archivos binarios para corregir sus errores (principalmente en los laboratorios) Como editar archivos Hex. A veces juego con binario a través del desplazamiento de bits.

3. Por ejemplo, si desea diseñar un lenguaje llamado X, deberá diseñar un compilador para X en c, c ++ o lenguaje ensamblador. Después de terminar el diseño del lenguaje y las bibliotecas, cuando sienta que el idioma ha alcanzado la madurez, puede transferir el compilador al lenguaje x, el compilador del lenguaje X escrito en X (este no es siempre el caso).

Considere python, no puede decir que Python está escrito en algún lenguaje de programación, ya que como lenguaje es solo un conjunto de reglas (como reglas de sintaxis o descripciones de funcionalidad estándar), entonces podríamos decir que está escrito en inglés (Objetivo de diseño del lenguaje)

Sin embargo, las reglas mencionadas pueden implementarse en algún lenguaje de programación, aquí es donde entra la elección del lenguaje. En este caso es C.

Lo que pides es básicamente sobre un semestre de educación … mejor cumplido por unos 2-3 enlaces de Wikipedia, como comienzo 🙂

Lenguaje ensamblador

Bytecode

Biblioteca de ingeniería de código de bytes