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 09:52] – 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. | ||
- | < | + | ^ Frontend ^^ |
- | ----------------------------------------------------------------------------------- | + | | Análisis Léxico | Convertir letras a palabras y símbolos | |
- | | | Análisis Léxico | + | | Análisis Sintáctico | Comprobar la sintaxis y las frases | |
- | | Frontend | + | | Análisis Semántico |
- | | | Análisis Sintáctico | | + | | Optimización del Árbol |
- | | |---------------------|-----------------------------------------------| | + | | Generación de Código Intermedio |
- | | | + | |
- | | | Análisis Semántico | + | ^ Backend para ZX Spectrum ^^ |
- | | | + | | Traducción a Ensamblador (Z80) || |
- | | |---------------------------------------------------------------------| | + | | Optimización de Código Ensamblador (reordenación de registros, etc) || |
- | | | + | | Ensamblado: Traducción a Código Máquina (o Código Objeto) |
- | | |---------------------------------------------------------------------| | + | \\ |
- | | | | + | |
- | |-------------|---------------------------------------------------------------------| | + | |
- | | | Traducción a Ensamblador (Z80) | | + | |
- | | 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 227: | Línea 218: | ||
<code basic> | <code basic> | ||
- | DIM a(10) AS Float : REM un array de 11 flotantes, del 0 al 10, ambos inclusive | + | REM un array de 11 flotantes, del 0 al 10, ambos inclusive |
+ | DIM a(10) AS Float | ||
</ | </ | ||
Línea 233: | Línea 225: | ||
<code basic> | <code basic> | ||
- | DIM a(1 TO 10, 1 TO 5) AS Float : REM esto es equivalente a DIM a(10, 5) en el BASIC de ZX Spectrum | + | REM esto es equivalente a DIM a(10, 5) en el BASIC de ZX Spectrum |
+ | DIM a(1 TO 10, 1 TO 5) AS Float | ||
</ | </ | ||
Línea 319: | Línea 312: | ||
DO | DO | ||
LET a = a + 1 | LET a = a + 1 | ||
- | UNTIL a >= 10 | + | LOOP UNTIL a >= 10 |
- | < | + | </code> |
Igualmente podemos usar CONTINUE DO y EXIT DO para adelantar el bucle o terminarlo anticipadamente. | Igualmente podemos usar CONTINUE DO y EXIT DO para adelantar el bucle o terminarlo anticipadamente. | ||
\\ | \\ | ||
+ | |||
==== DO ... WHILE ==== | ==== DO ... WHILE ==== | ||
Línea 367: | Línea 361: | ||
\\ | \\ | ||
+ | |||
===== Salida por Pantalla ===== | ===== Salida por Pantalla ===== | ||
Línea 628: | Línea 623: | ||
Suena un poco nostálgico, | Suena un poco nostálgico, | ||
+ | \\ | ||
+ | ===== Enlaces ===== | ||
+ | |||
+ | * {{: | ||
\\ | \\ |