Empezando con SDCC

Programando el Amstrad en BASIC, C, etc.
Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Empezando con SDCC

Mensajepor Artaburu » Sab 21 Abr , 2012 4:06 pm

Buenas, a ver si alguien que use este lenguaje y asm me puede ayudar porque no encuentro la razón de lo que me pasa ni solución por internet.

Resulta que estoy tratando de preparar una librería de utilidades para este lenguaje y estoy programándola en ensamblador y me encuentro con que no puedo hacer algo así:

Código: Seleccionar todo

...
ld hl, aqui
...
aqui:
...
Porque me da un error como este: Error: <a> machine specific addressing or addressing mode error
sin embargo, si hago un

Código: Seleccionar todo

JP aqui
no da error y va bien así que las etiquetas parece que deberían funcionar bien.

¿Alguna idea?

Gracias,
Salu2,
Arta

Avatar de Usuario
syx
Master of The Forum
Master of The Forum
Mensajes: 1353
Registrado: Mié 02 Sep , 2009 9:55 am

Re: Empezando con SDCC

Mensajepor syx » Sab 21 Abr , 2012 5:22 pm

Si no recuerdo mal, me parece que iba como el ensamblador del Amiga y tenías que preceder todo "dato inmediato" con #. Por lo que sería "LD HL,#aqui".

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: Empezando con SDCC

Mensajepor Artaburu » Sab 21 Abr , 2012 7:24 pm

¡Sí señor!
Muchas gracias :D
Salu2,
Arta

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: Empezando con SDCC

Mensajepor Artaburu » Sab 21 Abr , 2012 8:37 pm

Leches, me estoy volviendo loco con las cosas que hay que hacer.
Si se quiere poner por ejemplo:

Código: Seleccionar todo

LD (IX+3),1
se debe hacer así:

Código: Seleccionar todo

LD 3 (IX), 1
¡Qué cosas!
Salu2,
Arta

Avatar de Usuario
syx
Master of The Forum
Master of The Forum
Mensajes: 1353
Registrado: Mié 02 Sep , 2009 9:55 am

Re: Empezando con SDCC

Mensajepor syx » Dom 22 Abr , 2012 1:25 pm

Parece que tienes sus "ami-peculiaridades" :mrgreen: eso del 3(IX) también se usa en el Amiga para indicar desplazamientos relativos a un registro.

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: Empezando con SDCC

Mensajepor Artaburu » Lun 23 Abr , 2012 8:25 am

Juas, pues precisamente todas estas peculiaridades me están haciendo que le coja tirria :D
Pero no desisto que me ayuda a relajarme y entretenerme :D
Salu2,
Arta

Avatar de Usuario
zogo
Me voy lanzando
Me voy lanzando
Mensajes: 43
Registrado: Lun 03 Jul , 2006 2:53 pm

Re: Empezando con SDCC

Mensajepor zogo » Lun 23 Abr , 2012 9:01 am


Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: Empezando con SDCC

Mensajepor Artaburu » Lun 23 Abr , 2012 10:14 am

Vaya, pensé que habría mejor soporte en SDCC. lo del paso por parámetros ya lo tenía asumido, es una pena que no hagan uso de los registros porque ahorras muchos ciclos, ahí el Z88dk le da mil vueltas. Todavía no he analizado mucho lo que genera el SDCC pero por lo que comenta Mochilote, el bin generado suele ser bastante eficiente.

Veremos :D
Salu2,
Arta

Avatar de Usuario
Mochilote
Keeper of The Forum
Keeper of The Forum
Mensajes: 903
Registrado: Sab 08 Oct , 2005 4:26 pm
Contactar:

Re: Empezando con SDCC

Mensajepor Mochilote » Lun 23 Abr , 2012 11:13 am

Ojo, que cada uno haga sus pruebas, no me echéis el muerto a mi luego :-)

Por otro lado, que sepáis que hay planes de que z88dk adopte a SDCC como compilador, en vez del suyo (scc), para lo cual están metiendo cambios en SDCC y ofreciéndose a meter los que sean necesarios (podéis ver el asunto aquí: http://www.z88dk.org/forum/viewtopic.php?id=4900).
Esto en mi opinión es por dos motivos:

-z88dk está prácticamente muerto, si echáis un ojo en su web de sourceforge (http://z88dk.cvs.sourceforge.net/viewvc/z88dk/z88dk/) veréis que no hay nadie haciendo nada.
-SDCC tiene cambios diarios (http://sourceforge.net/apps/trac/sdcc/timeline)

Por otro lado, ¿que ventaja tendría usar z88dk compilando con SDCC? pues se supone que para usar la librería especifica de cada plataforma y tal que tiene z88dk, vamos lo que nadie usa en la practica... ¿habría compatibilidad con proyectos antiguos, ensamblador inline, etc? pues ni idea, ya veremos.

saludos.

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: Empezando con SDCC

Mensajepor Artaburu » Lun 23 Abr , 2012 12:30 pm

Muy interesante. Había leído algo en foros sobre qué cambios había que hacer en enigma.c de z88dk para compilar en sdcc pero no pensé que estaban pensando en unificar. Si lo consiguen será buena noticia para todos si lo que hacen es coger lo mejor de cada casa. Imagino que tocará modificar código (obviamente puesto que el paso de parámetros es distinto por definición). El inline ASM también cambiará porque cada uno usa un ensamblador diferente.
La pena es que con este horizonte, liarte a hacer cambios y programar sabiendo que acabarán convergiendo a un mix z88dk-sdcc no tiene mucho sentido... aunque igual el horizonte es muy lejano.
Salu2,
Arta

Avatar de Usuario
Mochilote
Keeper of The Forum
Keeper of The Forum
Mensajes: 903
Registrado: Sab 08 Oct , 2005 4:26 pm
Contactar:

Re: Empezando con SDCC

Mensajepor Mochilote » Lun 23 Abr , 2012 1:57 pm

Muy interesante. Había leído algo en foros sobre qué cambios había que hacer en enigma.c de z88dk para compilar en sdcc pero no pensé que estaban pensando en unificar. Si lo consiguen será buena noticia para todos si lo que hacen es coger lo mejor de cada casa. Imagino que tocará modificar código (obviamente puesto que el paso de parámetros es distinto por definición). El inline ASM también cambiará porque cada uno usa un ensamblador diferente.
La pena es que con este horizonte, liarte a hacer cambios y programar sabiendo que acabarán convergiendo a un mix z88dk-sdcc no tiene mucho sentido... aunque igual el horizonte es muy lejano.
La pregunta es ¿si z88dk acaba usando sdcc para compilar, porque no usar directamente sdcc?

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: Empezando con SDCC

Mensajepor Artaburu » Lun 23 Abr , 2012 4:41 pm

Pues sí... si z88dk hace eso la duda es razonable. Pero si lo hace y no se lleva las ventajas que tiene casi seguiremos en las mismas, cada compilador tendrá sus ventajas e inconvenientes y habrá dos escuelas de pensamiento.
z88dk seguirá teniendo muchas librerías por detrás para dar soporte al 'gran público' y sdcc será como Juan Palomo, yo me lo guiso yo me lo como, porque mantener librerías para dos sistemas con tantas diferencias no es nada práctico.

En el apartado de ensamblador he visto que es posible usar Pasmo con sdcc que tiene una sintaxis más parecida al estándar CPC de MAXAM (WinApe) y puede ser un puntazo, por lo menos para asm inline. Lo que no lo veo es para las librerías, no se si se podrían compilar con Pasmo.
Salu2,
Arta

Avatar de Usuario
Mochilote
Keeper of The Forum
Keeper of The Forum
Mensajes: 903
Registrado: Sab 08 Oct , 2005 4:26 pm
Contactar:

Re: Empezando con SDCC

Mensajepor Mochilote » Lun 23 Abr , 2012 4:44 pm

En el apartado de ensamblador he visto que es posible usar Pasmo con sdcc que tiene una sintaxis más parecida al estándar CPC de MAXAM (WinApe) y puede ser un puntazo, por lo menos para asm inline. Lo que no lo veo es para las librerías, no se si se podrían compilar con Pasmo.
Si te hubiera leído el primer tutorial de mi web :mrgreen: hubieras visto esto:

SDCC + SDCC2Pasmo + Pasmo: En la web http://www.norecess.net hay una serie de tutoriales para usar este método. Usamos SDCC para generar código en ensamblador desde nuestro código en c, después usamos SDCC2Pasmo para 'traducir' este código al estilo Maxam y luego usamos Pasmo para compilarlo y generar el binario final. Creo que este método se usa para los que realmente prácticamente sólo usan ensamblador, ya que está muy limitado en cuanto a usar código en c, por la sencilla razón de que el código en ensamblador que genera SDCC incluye únicamente nuestro código en c, pero no lleva incluida nada de la librería de c, por lo que no podremos usar 'ninguna' de las habituales funciones de c (manejo de memoria, cadenas de caracteres, etc), incluso no podremos, por ejemplo, ni hacer una división de enteros, ni muchas otras cosas ya que el binario final compilado por Pasmo revienta en ejecución al intentar 'saltar' a estas funciones... Yo este método lo veo más como un conversor de algoritmos de c a ensamblador.

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: Empezando con SDCC

Mensajepor Artaburu » Lun 23 Abr , 2012 4:46 pm

Pues leerlo seguro que lo leí pero hace ya.... antes de meterme en lío. Luego vi directamente lo de noraccess y ya me quedé ahí. :oops:
Eso sí, de tus tutos me he sacado los ficheros para que ejecute el bin en &100 y para poder escribir texto con el printf, que no se diga <rX <rX
Salu2,
Arta

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: Empezando con SDCC

Mensajepor Artaburu » Mar 24 Abr , 2012 10:35 pm

Bueno, pues tengo la cpcrslib al 70% ya para SDCC, "solo" me falta la parte del mapa de tiles.
He visto algo que me ha molado en el paso de parámetros, esta función, por ejemplo:

Código: Seleccionar todo

int cpc_GetScrAddress(char x, char y);
SDCC pasa los dos parámetros en un solo registro doble y z88dk lo pasaba en dos. Estupendo porque algo se ahorra :D
Salu2,
Arta


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic