Compilador del Onepass

En la programación, un compilador del Onepass es un compilador que pasa por las partes de cada unidad de la compilación sólo una vez, inmediatamente traduciendo cada parte a su código máquina final. Esto es en contraste con un compilador del multipase que convierte el programa en uno o varios pasos de representaciones intermedios entre código fuente y código máquina, y que trata de nuevo la unidad de la compilación entera en cada pase secuencial.

Ventajas

Los compiladores del Onepass son más pequeños y más rápidos que compiladores del multipase.

Desventajas

Los compiladores del Onepass son incapaces de generar como programas eficientes, debido al alcance limitado de la información disponible. Muchas optimizaciones del compilador eficaces requieren pases múltiples sobre un bloque básico, lazo, subrutina o módulo entero. Unos requieren pases sobre un programa entero. Algunos lenguajes de programación simplemente no se pueden compilar en un pase solo, a consecuencia de su diseño. Por ejemplo PL/I permite que declaraciones de datos se coloquen a cualquer parte dentro de un programa, por tanto ningún código se puede generar hasta que el programa entero se haya explorado. En contraste, muchos lenguajes de programación se han diseñado expresamente para compilarse con compiladores del Onepass e incluyen construcciones especiales para permitir la compilación del Onepass.

Pascal Example

Un ejemplo de tal construcción es la declaración avanzada en Pascal. Pascal requiere que los procedimientos se declaren o totalmente se definan antes del uso. Esto ayuda a un compilador del Onepass con su comprobación del tipo: la vocación de un procedimiento que no se ha declarado en ninguna parte es un error claro. Expida los procedimientos mutuamente recurrentes de la ayuda de las declaraciones llamar el uno al otro directamente, a pesar de la regla declarar antes del uso:

funcione raro (n: número entero): booleano;

comience

si n = 0 entonces

raro: = falso

más si n

Añadiendo una declaración avanzada para la función antes de la función, el compilador del Onepass se dice que habrá una definición de más tarde en el programa.

funcione hasta (n: número entero): booleano; expida;

funcione raro (n: número entero): booleano;

{Etcétera }\

</código>

Cuando la declaración actual del cuerpo de la función se hace, los parámetros se omiten o deben ser absolutamente idénticos a la declaración avanzada original, o un error se señalará.

Véase también



Buscar