herramientas_pcp
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| herramientas_pcp [2012/10/29 20:54] – created xzakox | herramientas_pcp [2012/11/18 22:02] (current) – [Preprocesador] xzakox | ||
|---|---|---|---|
| Line 5: | Line 5: | ||
| ====== Sintaxis ====== | ====== Sintaxis ====== | ||
| - | Ithlasm ignora la capitalización de todos los símbolos, de hecho trabaja en mayusculas | + | //Ithlasm// ignora la capitalización de todos los símbolos, de hecho trabaja en mayúsculas |
| - | En esta primera versión, los valores inmediatos se deben especificar en notación decimal, si bien en futuras versiones se planea soportar hexadecimal y binario. | + | La sintaxis básica de una instrucción es: |
| - | Las etiquetas tienen una limitación importante, y es que ningun nombre de etiqueta puede contener como subcadena el nombre completo de otra etiqueta, esto es causado por el parser del preprocesador, | + | |
| - | Las etiquetas se definen usando | + | Siendo los parámetros, |
| - | Los comentarios empiezan por el símbolo ";" | + | En esta primera versión, los valores inmediatos y los valores de los defines (DEF, DB, DW) se pueden expresar en decimal, hexadecimal (0x..) o binario (0b..) |
| + | |||
| + | Las etiquetas se definen usando el símbolo ":" | ||
| + | |||
| + | Los comentarios empiezan por el símbolo ";" | ||
| + | |||
| + | La síntaxis básica de una instrucción sería | ||
| + | |||
| + | | ||
| + | |||
| + | ====== Preprocesador ====== | ||
| + | |||
| + | El preprocesador acepta los comentatios y etiquetas como hemos visto, y las siguientes directivas: | ||
| + | |||
| + | * **INCLUDE** " | ||
| + | * **DEF** < | ||
| + | * **DB** valor1, valor2... : Inserta en el código los bytes de datos especificados a continuación, | ||
| + | * **DW** valor1, valor2... : Inserta en el código las palabras de datos especificadas a continuación, | ||
| + | * **DS** " | ||
| + | * **STACK** valor: Define un espacio reservado para la pila del programa de " | ||
| + | |||
| + | |||
| + | ====== Ejemplo ====== | ||
| + | |||
| + | Un ejemplo de código para el // | ||
| + | |||
| + | < | ||
| + | ; prueba de texto | ||
| + | DEF null 0 | ||
| + | |||
| + | ld r1, 1 | ||
| + | ld r2, texto ; r2 = text start addr | ||
| + | ld r9, 3 ; putch | ||
| + | ld r3, imprime | ||
| + | ld r4, fin_impresion | ||
| + | ld r5, null | ||
| + | imprime: | ||
| + | lb r10, r2 ; get char | ||
| + | beq r10, r5, r4 ; if c = \0x00, end loop | ||
| + | call 0 | ||
| + | add r1, r2, r2 ; r2 = r2 + 1 | ||
| + | jmp r3 | ||
| + | fin_impresion: | ||
| + | jmp r4 ; endless loop | ||
| + | texto: | ||
| + | DS " | ||
| + | </ | ||
herramientas_pcp.1351540481.txt.gz · Last modified: 2012/10/29 20:54 by xzakox