Estoy de lleno en el tema del compilador/traductor, despues de meditarlo con la almuada voy a crear instrucciones igualitas al Basic...
SCREEN
LOCATE
COLOR
el porqué:
senzillo de responder
si creará una función de tipo:
def Screen(n1,n2):
codigo a generar
cada vez que se llamara a la rutina se cuela un call screen, con lo cual se entorpece la rapidez de ejecución, unas sentencias transparentes debidamente cogidas de
la bios y parecidas al Basic seran muy útiles.
Imaginad si seria interesante el tema de poder compilar a lenguaje maquina antiguos programas
escritos en basic, con la evidente ganancia de velocidad.
lunes, 14 de mayo de 2007
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.
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!!
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()
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
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
Suscribirse a:
Entradas (Atom)