Bootstrapping en el diseño del compilador

Bootstrapping es un proceso en el que se usa un lenguaje simple para traducir un programa más complicado que, a su vez, puede manejar un programa más complicado. Este programa complicado puede manejar programas aún más complicados y así sucesivamente.

Escribir un compilador para cualquier lenguaje de alto nivel es un proceso complicado. Lleva mucho tiempo escribir un compilador desde cero. Por lo tanto, se usa un lenguaje simple para generar el código de destino en algunas etapas. para comprender claramente la técnica de Bootstrapping , considere el siguiente escenario.

Supongamos que queremos escribir un compilador cruzado para el nuevo lenguaje X. El lenguaje de implementación de este compilador es Y y el código de destino que se genera está en el lenguaje Z. Es decir, creamos XYZ. Ahora, si el compilador Y existente se ejecuta en la máquina M y genera código para M, entonces se denota como YMM. Ahora, si ejecutamos XYZ usando YMM, obtenemos un compilador XMZ. Eso significa un compilador para el idioma de origen X que genera un código de destino en el idioma Z y que se ejecuta en la máquina M.

El siguiente diagrama ilustra el escenario anterior.

Ejemplo:
podemos crear un compilador de muchas formas diferentes. Ahora vamos a generar.

Compilador que toma lenguaje C y genera un lenguaje ensamblador como salida con la disponibilidad de una máquina de lenguaje ensamblador.

  • Paso 1: Primero escribimos un compilador para una pequeña parte de C en lenguaje ensamblador.

  • Paso 2: Luego, se usa con un pequeño subconjunto de C, es decir, C0, para el lenguaje de origen c, se escribe el compilador.

  • Paso 3: Finalmente compilamos el segundo compilador. usando el compilador 1 se compila el compilador 2.

  • Paso 4: Así obtenemos un compilador escrito en ASM que compila C y genera código en ASM.

Publicación traducida automáticamente

Artículo escrito por MKS075 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *