lunes, 30 de abril de 2007

Especulando sobre 'If'

Tras estar deliberando, he llegado a la conclusión que :

en el ejemplo:

if n==0:
n=100
^

en la posición n, no sólo hay que guardar la posición de la columna, sinó que también desde dónde salió.

tuple_a=[4,'if']

se necesita para acabar el código en assembler.

No es lo mismo que:

for j in range(4):
n=100
^

La posición es la misma pero el código a generar es distinto. Y necesitamos saber de que instrucción proviene toda la nueva parrafada.

domingo, 29 de abril de 2007

Preview de Def y Inline Completado

La instrucción Inline ha sido completada con éxito, despúes de mis quebraderos de cabeza con el tema de contar espacios.
Asímismo la instrucción def para definir funciones està en fase preview.
He empezado con la sentencia if. Aquí empieza el marrón!!

sábado, 28 de abril de 2007

Bastante curro

#pyasmsx example, only testing v01

def sumar(n,m):
return n+m

def main():
bx=55
ax=64
cx=sumar(ax,bx)
print cx


if __name__ == '__main__': main()


resultado de hoy...

; Source generated by PyAsmsx 0.1
; Compile with asMSX.exe (www.robsy.net)

;pyasmsx example, only testing v01
;1 #pyasmsx example, only testing v01
;2
;----------definicion funcion-----------
;3 def sumar(n,m):
;4 return n+m
;5
;----------definicion funcion-----------
;6 def main():
;7 bx=55
;8 ax=64
;9 cx=sumar(ax,bx)
;10 print cx
;11
;12
;...sentencia if...
;13 if __name__ == '__main__': main()

Primeros pasos

Estoy programando la version pre-alpha de mi cross-compiler.
Es un programa que genera codigo para assembler z80 (version de asMsx) ---> www.robsy.net
a partir de codigo python.

input args:
pyasmsx.py [file_in.py [file_out]] [/debug]

output:
example.asm
or
file_out.asm

------------------------------------------------------------------
Me pregunto como debería ser el paso de parametros en z80.

ejemplo python:
def sumar(a,b):
return a+b

sumar(3+6)

codigo a generar... para z80

ld af,3
ld bc,6
push af
push bc
call sumar
ret

sumar:
"codigo"

y prescindir de push y pops...
asumiendo claro que los parametros de entrada estan contenidos en los registros...

entonces, tenemos:
ld a,3
ld b,6
call sumar