User Tools

Site Tools


herramientas_pcp

This is an old revision of the document!


Table of Contents

Para desarrollar para el PCP se ha creado el ensamblador ithlasm, un ensamblador básico escrito en python, capaz de crear archivos binarios que se pueden ejecutar directamente en la plataforma.

El ithlasm tiene carácteristicas básicas de preprocesado, como includes, etiquetas, comentarios, etc.

Sintaxis

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.

La sintaxis básica de una instrucción es:

instrucción <param1>, <param2>… etc

Siendo los parámetros, registros, valores inmediatos, o etiquetas que se substituirán por el inmediato de su dirección en el archivo.

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 stack 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:

; 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!"
herramientas_pcp.1353272550.txt.gz · Last modified: 2012/11/18 22:02 by xzakox