significado que palabra mecanografiado mecanografiadas mecanografiada firma espacio doble definicion compiler-construction ghc compiler-optimization llvm-ir intermediate-language

compiler construction - que - Pragmática de las lenguas intermedias mecanografiadas.



mecanografiado definicion (0)

Una tendencia en la compilación es usar lenguajes intermedios escritos . El ghc de Haskell con su lenguaje intermedio core , una variante del Sistema F-omega, es un ejemplo de esta arquitectura [1]. Otro es LLVM, que tiene un lenguaje intermedio escrito en su núcleo [2]. El beneficio de este enfoque es que los errores en las transformaciones que forman parte del generador de código se pueden detectar temprano. Además, la información de tipo se puede utilizar durante la optimización y la generación de código.

Por eficiencia, los IR tipificados se verifican por tipo, en lugar de inferir su tipo. Para que las verificaciones de tipos sean rápidas, cada variable y cada carpeta llevan tipos para una fácil comprobación de tipos.

Sin embargo, muchas transformaciones en la tubería del compilador pueden introducir nuevas variables. Por ejemplo, una transformación de normalización K(.) Podría transformar una aplicación

M(N)

en una expresión como

let x = K(M) in let y = K(N) in x(y)

Pregunta. Me pregunto cómo los compiladores manejan el problema de dar tipos a las variables recién introducidas. ¿Se vuelven a verificar, en el ejemplo anterior K(M) y K(N) ? ¿No es eso mucho tiempo? ¿Y requiere pasar un entorno alrededor? ¿Utilizan los mapas de los nodos AST para escribir información para evitar que se vuelva a ejecutar la verificación de tipos?

  1. S. Marlow, S. Peyton Jones, el compilador de Glasgow Haskell .

  2. Manual de referencia del lenguaje LLVM .