User Tools

Site Tools


herramientas_pcp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
herramientas_pcp [2012/10/29 21:02] xzakoxherramientas_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 internamente, asi que las instrucciones se pueden escribir en mayusculas o minúsculas, por el contrario, las directivas del preprocesador se deben de escribir en mayusculas ya que son analizadas antes de la conversión.+//Ithlasm// ignora la capitalización de todos los símbolos, de hecho trabaja en mayúsculas internamente, asi que las instrucciones se pueden escribir en mayúsculas o minúsculas, por el contrario, las directivas del preprocesador se deben de escribir en mayúsculas ya que son analizadas antes de la conversión. Asi mismo ignora los espacios en blanco, tabuladores, etc, salvo el espacio que separa la instrucción y sus parámetros.
  
-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 importantey es que ningun nombre de etiqueta puede contener como subcadena el nombre completo de otra etiqueta, esto es causado por el parser del preprocesador, aun en desarrollo.+ instrucción    <param1><param2>..etc
  
-Las etiquetas se definen usando el simbolo ":" al final de su nombre, y deben de estar en una linea sin más instrucciones. Apuntarán a la posición de memoria de la siguiente línea con datos o código.+Siendo los parámetros, registros, valores inmediatos, o etiquetas que se substituirán por el inmediato de su dirección en el archivo.
  
-Los comentarios empiezan por el símbolo ";". A partir de ese simbolo el resto de la linea es ignorado cara al preprocesado ensamblado.+En esta primera versión, los valores inmediatos los valores de los defines (DEF, DB, DW) se pueden expresar en decimal, hexadecimal (0x..) o binario (0b..)
  
-===== Preprocesador =====+Las etiquetas se definen usando el símbolo ":" al final de su nombre, y deben de estar en una linea sin más instrucciones. Apuntarán a la posición de memoria de la siguiente línea con datos o código. 
 + 
 +Los comentarios empiezan por el símbolo ";". A partir de ese símbolo el resto de la linea es ignorado cara al preprocesado y ensamblado. 
 + 
 +La síntaxis básica de una instrucción sería 
 + 
 + Instruccion Operador1, operador2... 
 + 
 +====== Preprocesador ======
  
 El preprocesador acepta los comentatios y etiquetas como hemos visto, y las siguientes directivas: El preprocesador acepta los comentatios y etiquetas como hemos visto, y las siguientes directivas:
  
-  * INCLUDE "archivo" : Incluye el contenido del archivo referenciado en la posición de la directiva +  * **INCLUDE** "archivo" : Incluye el contenido del archivo referenciado en la posición de la directiva 
-  * DB valor1, valor2... : Inserta en el código los bytes de datos especificados a continuación, separados por comas en caso de ser más de uno. Deben expresarse en decimal +  * **DEF** <símbolo> <valor>: Define un símbolo con un valor constante asociado. Este símbolo se puede usar en el código como valor inmediato, siendo este substituido antes del ensamblado. 
-  * DW valor1, valor2... : Inserta en el código las palabras de datos especificadas a continuación, separadas por comas en caso de ser más de una. Deben expresarse en decimal. Las palabras se alinean para ocupar 4 bytes. +  * **DB** valor1, valor2... : Inserta en el código los bytes de datos especificados a continuación, separados por comas en caso de ser más de uno. Deben expresarse en decimal 
-  * DS "Cadena de texto" : Inserta en el código los bytes de la cadena de caracteres especificada entre comillas, añadiendo un caracter 0x00 al final de la misma.+  * **DW** valor1, valor2... : Inserta en el código las palabras de datos especificadas a continuación, separadas por comas en caso de ser más de una. Deben expresarse en decimal. Las palabras se alinean para ocupar 4 bytes. 
 +  * **DS** "Cadena de texto" : Inserta en el código los bytes de la cadena de caracteres especificada entre comillas, añadiendo un carácter 0x00 al final de la misma. 
 +  * **STACK** valor: Define un espacio reservado para la pila del programa de "valor" palabras. Internamente el preprocesador substituye esto por las instrucciones necesarias para reservar esa memoria, e iniciar el puntero de pila en este punto. Es recomendable usar esta directiva al inicio del programa. 
  
-==== Ejemplo ====+====== Ejemplo ======
  
-Un ejemplo de código para el ithlasm:+Un ejemplo de código para el //ithlasm//:
  
 <code> <code>
 ; prueba de texto ; prueba de texto
 +        DEF null 0
 +        
  ld r1, 1  ld r1, 1
- ld r2, texto ; r2 = inicio texto+ ld r2, texto ; r2 = text start addr
  ld r9, 3 ; putch  ld r9, 3 ; putch
  ld r3, imprime  ld r3, imprime
  ld r4, fin_impresion  ld r4, fin_impresion
- ld r5, 0+ ld r5, null
 imprime: imprime:
  lb r10, r2 ; get char  lb r10, r2 ; get char
herramientas_pcp.1351540959.txt.gz · Last modified: 2012/10/29 21:02 by xzakox