User Tools

Site Tools


herramientas_pcp

Differences

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

Link to this comparison view

Next revision
Previous revision
herramientas_pcp [2012/10/29 20:54] – created 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 y ensamblado.+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 ":" 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: 
 + 
 +  * **INCLUDE** "archivo" : Incluye el contenido del archivo referenciado en la posición de la directiva 
 +  * **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. 
 +  * **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 
 +  * **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 ====== 
 + 
 +Un ejemplo de código para el //ithlasm//: 
 + 
 +<code> 
 +; 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 "Hola viejunos!" 
 +</code>
herramientas_pcp.1351540481.txt.gz · Last modified: 2012/10/29 20:54 by xzakox