He estado leyendo sobre las técnicas de compilación de optimización local, pero sigo sin obtener cómo se implementan. La idea es que el optimizador mira una 'ventana' del código cada vez y de alguna manera detecta patrones y los reemplaza con versiones más optimizadas.patrones de optimización de mirilla
Mi pregunta es, ¿cómo uno descubre estos patrones? (digamos que su plataforma es una máquina virtual que genera código ensamblador para una computadora inventada, como Schock's Hack).
¿La gente realmente inspecciona el código manualmente (usando Gráficos de control de flujo o DAG o lo que sea) y luego reúne todos los patrones identificados y los codifica en el optimizador? O hay una manera automática.
Por ejemplo, alimenta el código que se va a optimizar en un analizador y arroja dichos patrones. Si es así, ¿cómo se puede comenzar a escribir uno?
Creo que esto generalmente se llama 'caché en línea'. Encontrará mucha literatura sobre motores de JavaScript recientes que usan esta técnica en tiempo de ejecución. Ver http://wingolog.org/archives/2012/05/29/inline-cache-applications-in-scheme. – leppie
Eso es interesante, la primera vez que me encuentro con esto. En general estaba pensando en operaciones como la reducción de la fuerza, la evaluación constante, el control de flujo opt, etc. – gfountis
Esto parece estar dirigido a 'tiempo de ejecución' sí? ¿O se usa para generar un código de ensamblaje más ajustado? – gfountis