Autor Tema: para los que programáis en C  (Leído 8247 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: para los que programáis en C
« Respuesta #15 en: 07 de Febrero de 2007, 13:47:55 »
En tú caso es un programa complejo, dónde la optimización debe ser necesaria, tanto a nivel del compilador como a nivel del programador, revisarlo más de una vez para intentar hacerlo más optimizable.


Suerte!!! ;)

Estaba utilizando la versión 3.02 para estudiantes... y acabo de probar a compilar en la 2.20 comercial, las dos en modo tradicional(no extendido)...

Resultado: 3.5% más de código. ¿Esto quiere decir que mi código está tan mal estructurado que ni siquiera con optimizaciones se consigue nada? o que ¿la versión 3.02 no comercial es mejor que la 2.20 comercial?.

Me temo que lo primero :( :( :(
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: para los que programáis en C
« Respuesta #16 en: 07 de Febrero de 2007, 14:56:14 »
Estaba utilizando la versión 3.02 para estudiantes... y acabo de probar a compilar en la 2.20 comercial, las dos en modo tradicional(no extendido)...

Resultado: 3.5% más de código. ¿Esto quiere decir que mi código está tan mal estructurado que ni siquiera con optimizaciones se consigue nada? o que ¿la versión 3.02 no comercial es mejor que la 2.20 comercial?.

Me temo que lo primero :( :( :(

Creo que una comparación justa sería 3.02 comercial y 3.02 estudiante.

La versión 2.2 debe tener no menos de 3 años de antigüedad (no sabría decirte con exactitud).

Es muy muy difícil que te demos un vaticinio de qué es lo que falla en tu código para que no lo optimice tanto, de hecho hacer código "óptimo" para el compilador no es una tarea trivial.  Hay muchas cosas a tener en cuenta como el #pragma varlocate, como la definición y utilización del linker file, etc.  Estas cosas se pueden ver sobre los fierros o mejor dicho sobre el código fuente, con una clara explicación de qué es lo que quieres hacer con él.

Es una tarea ardua.  Puede que un código lo hagas en 1 semana para codificarlo y te lleve otra semana optimizarlo o incluso más.  Puede que incluso hasta tengas que recodificar mucho de tu código para que sea compilado en menor espacio.

Me llevó unos días aprender a usar el C18 y me llevó meses aprender los trucos para hacer el programa más óptimo.  En esto del aprendizaje aconsejo el conocer muy bien la arquitectura del pic que usarás, conocer de assembler también es muy importante, conocer mucho de las optimizaciones del compilador y visitar seguido el foro de Microchip donde se comentan cosas de muy bajo nivel que son realmente muy útiles compartir con otros.

Saludos
 

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: para los que programáis en C
« Respuesta #17 en: 07 de Febrero de 2007, 15:15:19 »
Código: [Seleccionar]
Es una tarea ardua.  Puede que un código lo hagas en 1 semana para codificarlo y te lleve otra semana optimizarlo o incluso más.  Puede que incluso hasta tengas que recodificar mucho de tu código para que sea compilado en menor espacio.

Estoy dejando la optimización para el final pues como cada 2x3 me toca modificar cosas, creo que no merece la pena optimizarlo desde ya. De todos modos ya le estoy dando caña a la documentación de C18 para ver como funciona por dentro el compilador. Desde luego tengo claro que me llevará bastantes dias ir agrupando variables(para evitar el "banking"), pasar las cadenas de strings a ctes, mirar que funciones pueden ser estáticas,etc.

Saludos!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: para los que programáis en C
« Respuesta #18 en: 07 de Febrero de 2007, 15:20:47 »
Código: [Seleccionar]
Es una tarea ardua.  Puede que un código lo hagas en 1 semana para codificarlo y te lleve otra semana optimizarlo o incluso más.  Puede que incluso hasta tengas que recodificar mucho de tu código para que sea compilado en menor espacio.

Estoy dejando la optimización para el final pues como cada 2x3 me toca modificar cosas, creo que no merece la pena optimizarlo desde ya. De todos modos ya le estoy dando caña a la documentación de C18 para ver como funciona por dentro el compilador. Desde luego tengo claro que me llevará bastantes dias ir agrupando variables(para evitar el "banking"), pasar las cadenas de strings a ctes, mirar que funciones pueden ser estáticas,etc.

Saludos!

Sí , hay técnicas que responden a mejoras en la velocidad y otras a disminiuir el tamaño del código.  No siempre convergen.  A veces un código veloz no es precisamente el más breve.

Cada uno va elaborando su propio método que se adaptará al estilo propio de programar que tiene cada persona.

Saludos


- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado el-zurdo

  • PIC10
  • *
  • Mensajes: 6
consulta sobre sdcc
« Respuesta #19 en: 22 de Febrero de 2007, 13:19:18 »
Hola naho. Yo empecé (y es la que uso actualmente) con el PIC C Compiler de CCS, es pago.
hay una versión gratuita llamada sdcc que se puede bajar de http://sdcc.sourceforge.net/index.php, esta no la conozco, recien la estoy bajando y la probaré a ver que tal es.

Salu2
Pedro


buenas..queria saber si la version gratuita sdcc del compilador CCS se puede utilizar para el PIC 16F873, ya que me he descargado otra version gratis que no me sirve. Muchas gracias

Desconectado el-zurdo

  • PIC10
  • *
  • Mensajes: 6
consulta sobre sdcc
« Respuesta #20 en: 23 de Febrero de 2007, 15:44:22 »
hola..queria saber si alguien se bajo la version del sdcc y la utilizó.
Yo la descargue y veo que en la libreria esta el PIC que necesito (16F873),
pero no se bien como utilizar el programa..en el unico archivo ejecutable que
abro aparece una ventana de DOS.Hasta ahora solo he programado muy poco
en assembler utilizando el MPLab y necesito insertar unas lineas en C.
Les agradezco cualquier informacion..muchas gracias.Saludos

                 Luis

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: consulta sobre sdcc
« Respuesta #21 en: 24 de Febrero de 2007, 10:38:58 »
el-zurdo, te puedo ayudar con unos links

El Manual
SDCC Manual

La lista de correo, aquí está Scott Dattalo , creador del gpsim, gpasm y del puerto del SDCC para pics.
Lista de Correo de GNUPIC

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado el-zurdo

  • PIC10
  • *
  • Mensajes: 6
Re: para los que programáis en C
« Respuesta #22 en: 26 de Febrero de 2007, 13:23:13 »
Hola naho. Yo empecé (y es la que uso actualmente) con el PIC C Compiler de CCS, es pago.
hay una versión gratuita llamada sdcc que se puede bajar de http://sdcc.sourceforge.net/index.php, esta no la conozco, recien la estoy bajando y la probaré a ver que tal es.

Salu2
Pedro
------------------------------------------------------------------------------------------------------------
gracias palitroquez..no se por que no puedo enviarte un msj privado, ahi va mi respuesta:

buenas..gracias por la respuesta, encontraste algun plugin?
Por lo q vi tenes razon..solo puedo abrir 2 ventanas en MSDOS..
ejecutando el archivo sdcpp o el makebin dentro de la carpeta bin.
Lo unico que quiero hacer es obtener un archivo en assembler de un pequeño programa q tengo en c, por que el programa principal lo tengo en assembler.
Al parecer segun el manual debo usar la siguiente linea de comando:

For single source file 8051 projects the process is very simple. Compile your programs with the following command "sdcc sourcefile.c". This will compile, assemble and link your source file. Output files are as follows:
sourcefile.asm - Assembler source file created by the compiler.

Muchas gracias..saludos

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: para los que programáis en C
« Respuesta #23 en: 26 de Febrero de 2007, 13:30:01 »
te cuento el-zurdo que estuve viendo el sdcc (todavía lo tengo instalado en mi PC) y se me ocurrió ejecutar sdcc -help uff! montones de argumentos que tiene para escoger, con razón si trabaja para otros micros. estuve leyendo la parte de los pic, pero no entendí bien  :(, de acuerdo a la sentencia añadida él te generará el archivo correspondiente (asm, o, hex, etc.).

lo que hay que buscarse es si hay algún plugins que lo enlace al MPLAB, para que haga todo eso automático. así como hacen otros compiladores.

Salu2
Pedro
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: para los que programáis en C
« Respuesta #24 en: 26 de Febrero de 2007, 14:15:29 »
yo no se si es correcto seguir hablando del SDCC en este hilo, pero acabo de ver una página

http://particle.teco.edu/software/sdcc/sdccmigration.html

donde hablan de como migrar un código escrito en CCS a SDCC que verdadera perla esta ¿verdad?  :D

voy a seguir investigando...

Salu2
Pedro
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek