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.
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…
El preprocesador acepta los comentatios y etiquetas como hemos visto, y las siguientes directivas:
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!"