Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
articulos:zxbasic_suenyo_hecho_realidad [24-03-2009 10:23] – sromero | articulos:zxbasic_suenyo_hecho_realidad [03-04-2009 06:45] (actual) – sromero | ||
---|---|---|---|
Línea 51: | Línea 51: | ||
* Finalmente, un ensamblador (el ZX BASIC contiene uno propio) y un enlazador de código objeto (el ZX BASIC no usa ninguno: por ahora todo se trabaja en ensamblador y se compila a binario directamente) realizan el resto del trabajo produciendo el binario final. | * Finalmente, un ensamblador (el ZX BASIC contiene uno propio) y un enlazador de código objeto (el ZX BASIC no usa ninguno: por ahora todo se trabaja en ensamblador y se compila a binario directamente) realizan el resto del trabajo produciendo el binario final. | ||
- | <b>Frontend:</ | + | ^ Frontend |
| Análisis Léxico | Convertir letras a palabras y símbolos | | | Análisis Léxico | Convertir letras a palabras y símbolos | | ||
| Análisis Sintáctico | Comprobar la sintaxis y las frases | | | Análisis Sintáctico | Comprobar la sintaxis y las frases | | ||
| Análisis Semántico | Comprobar los tipos de variable,\\ declaraciones duplicadas o fuera de contexto.\\ Construcción del Árbol Sintáctico. | | | Análisis Semántico | Comprobar los tipos de variable,\\ declaraciones duplicadas o fuera de contexto.\\ Construcción del Árbol Sintáctico. | | ||
- | | Optimización del Árbol || | + | | Optimización del Árbol |
- | | Generación de Código Intermedio || | + | | Generación de Código Intermedio |
- | < | + | ^ Backend para ZX Spectrum ^^ |
- | | + | | Traducción a Ensamblador (Z80) || |
- | | | Análisis Léxico | + | | Optimización de Código Ensamblador (reordenación de registros, etc) || |
- | | Frontend | + | | Ensamblado: Traducción a Código Máquina (o Código Objeto) |
- | | | Análisis Sintáctico | | + | \\ |
- | | | + | |
- | | | + | |
- | | | Análisis Semántico | + | |
- | | | + | |
- | | | + | |
- | | | + | |
- | | | + | |
- | | | + | |
- | |-------------|---------------------------------------------------------------------| | + | |
- | | | + | |
- | | Backend | + | |
- | | para | Optimización de Código Ensamblador (reordenación de registros, etc) | | + | |
- | | ZXSpectrum | + | |
- | | | | + | |
- | ----------------------------------------------------------------------------------- | + | |
- | </ | + | |
Prácticamente todos los compiladores actuales trabajan de forma similar. La ventaja de esto es que se pueden cambiar las capas de backend de manera que es posible compilar el mismo programa para distintas arquitecturas: | Prácticamente todos los compiladores actuales trabajan de forma similar. La ventaja de esto es que se pueden cambiar las capas de backend de manera que es posible compilar el mismo programa para distintas arquitecturas: | ||
Línea 329: | Línea 312: | ||
DO | DO | ||
LET a = a + 1 | LET a = a + 1 | ||
- | UNTIL a >= 10 | + | LOOP UNTIL a >= 10 |
</ | </ | ||
Línea 335: | Línea 318: | ||
\\ | \\ | ||
+ | |||
==== DO ... WHILE ==== | ==== DO ... WHILE ==== | ||
Línea 642: | Línea 626: | ||
===== Enlaces ===== | ===== Enlaces ===== | ||
- | * {{: | + | * {{: |
\\ | \\ |