Autor Tema: Cuidado con CCS & ASM  (Leído 3920 veces)

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

Desconectado elmasvital

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 1713
Cuidado con CCS & ASM
« en: 15 de Enero de 2009, 13:29:13 »
Se nota que estoy de proyecto???vuelvo con otra paradoja que me ha llevado casi al manicomio :-P

El proyecto está realizado en CCS (compilado desde mplab para debugear mejor con ICD2). Todo las referencias sobre el programa que uso está referido al entorno de MPLAB con pluging para CCS.

Estoy como algunos sabeis realizando un proyecto en el que la temporización es crucial y cualquier desjuste te da un fallo en vete a saber tu donde y que es dificil de relacionar hasta que le das mil vueltas...

He aquí otro ejemplo de ello...

este código

   btfsc   PORTA, 0 
   bsf     INDF0, 7
   subwf   FSR0L, W
   btfsc   STATUS,Z
   goto   fin_data
   incf   FSR0L
   goto   Get_Data

con porta a 0 e INDF >0 deberia realizarse en 8 ciclos de instrucción... pues bien despues de darle muchas vueltas y de sospechar de esta rutina veamos lo que dice el simulador de mplab compilando esta rutina y observando el stopwatch...




7 CICLOS???? pero cómo porqué... Ya visto el problema está claro que no está compilando lo que yo le he mandado... veamos la ventanita de program memory (para el que no lo sepa esta ventana contiene realmente lo que el pic tiene en su memoria de programa)



El problema en cuestión como podeis ver es que el compilador, imagino que ccs, supervisa el código y optimiza

   btfsc   STATUS,Z   
   goto   fin_data

que se ejecutaría en 2/3 ciclos de instrucción

por

   bz 0x44c

que se ejecuta en 1/2....
« Última modificación: 15 de Enero de 2009, 13:59:27 por elmasvital »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Cuidado con CCS & ASM
« Respuesta #1 en: 15 de Enero de 2009, 14:25:46 »
Jeje, se podría decir que el compilador "se ha pasado de listo".

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: Cuidado con CCS & ASM
« Respuesta #2 en: 15 de Enero de 2009, 17:05:44 »
pues vaya chasco, :? si que se ha pasado de listo el compilador.
Aparte del tema, yo tenia una preguntica sobre mplab, me acorde al ver la ventana de programa de elmasvital, como se hace para que la ventana de programa muestre los nombres asignados a la memoria ram y los bits de cada uno y los nombres de las CALL. A mi me sale solo con numeros hace un par de versiones, y desde entonces ando un poco perdido  :? en esa ventana

« Última modificación: 15 de Enero de 2009, 18:40:36 por un Moderador »

Desconectado droky

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 628
    • Diseños radikales libres
Re: Cuidado con CCS & ASM
« Respuesta #3 en: 15 de Enero de 2009, 17:47:30 »
 :mrgreen: Vaya, para una vez que depura bien... :)

Salu2
Yo... he visto cosas que vosotros no creeríais... atacar naves en llamas más allá de Orión, he visto rayos C brillar en la oscuridad cerca de la puerta Tannhäuser.
Todos esos momentos se perderán en el tiempo como lágrimas en la lluvia.
Es hora de morir.

Si me buscas en twitter, me tienes por @radikaldesig

Desconectado elmasvital

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 1713
Re: Cuidado con CCS & ASM
« Respuesta #4 en: 15 de Enero de 2009, 18:43:16 »
pues vaya chasco, :? si que se ha pasado de listo el compilador.
Aparte del tema, yo tenia una preguntica sobre mplab, me acorde al ver la ventana de programa de elmasvital, como se hace para que la ventana de programa muestre los nombres asignados a la memoria ram y los bits de cada uno y los nombres de las CALL. A mi me sale solo con numeros hace un par de versiones, y desde entonces ando un poco perdido  :? en esa ventana


En la misma ventana de program memory hay unas pestañitas abajo a la izquierda. Señala la que pone symbolic. Si trabajas con ccs tambien puedes ver las concordancias del codigo fuente en c y el ensamblado en la ventana view>>dissasembly listing.


Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Cuidado con CCS & ASM
« Respuesta #5 en: 16 de Enero de 2009, 09:04:18 »
Y es por esto que no me decido pasarme a C, viva el asm!  :D
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Cuidado con CCS & ASM
« Respuesta #6 en: 16 de Enero de 2009, 09:48:01 »
Una pregunta ¿el código ASM está embebido? o ¿es el generado por el compilador al transformar el programa "C"?

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Cuidado con CCS & ASM
« Respuesta #7 en: 16 de Enero de 2009, 12:57:14 »
Esa es la misma pregunta que se me ocurre a mi.

¿Esta con #ASM o es el que genera CCS?
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado elmasvital

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 1713
Re: Cuidado con CCS & ASM
« Respuesta #8 en: 16 de Enero de 2009, 13:22:46 »
es #asm #endasm... osea embebido dentro de un programa de c del compilador ccs, que es lo que se ve en la ventana de la izquierda. En la ventana de la derecha la memoria de programa del pic.


Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Cuidado con CCS & ASM
« Respuesta #9 en: 16 de Enero de 2009, 15:42:47 »
El nivel de optimizacion del compilador de CCS viene por defecto en 9 , siendo el valor mas alto creo que el 11.
Lo que no sabia es que pudiera optimizar mas aun el codigo ya escrito en assembler... :shock: :shock:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: Cuidado con CCS & ASM
« Respuesta #10 en: 16 de Enero de 2009, 18:37:57 »
Citar
En la misma ventana de program memory hay unas pestañitas abajo a la izquierda. Señala la que pone symbolic. Si trabajas con ccs tambien puedes ver las concordancias del codigo fuente en c y el ensamblado en la ventana view>>dissasembly listing.

oooooooooh!!   :mrgreen:  gracias  :mrgreen: me acabas de alegrar el finde (esto antes de mirarlo)

joder pero si es un perro, no es que me muerda, es que soy jili!! (y esto despues de mirarlo)  :D :D
pues na ya lo ven, a veces uno con la cosa mas simple se queda pillao dando vueltas  :-)

volviendo al tema del asm optimizado por c ??  :shock: yo no se mucho, pero no me parece que vaya a hacer lo mismo el codigo en asm que optimizado por ccs, para mi que se le ha ido la olla. si no seria mas facil programar en assembler y que ccs te lo optimize, en vez de hacerlo a pulso, y ron como algunos ;P jejej
bueno, son instrucciones para pic18 que las estoy empezando a mirar, pero si te recoloca el programa ten cuidado por si alguna te lia que el assembler ya es puñetero como para que te lo modifiquen

un saludo y gracias
« Última modificación: 16 de Enero de 2009, 18:48:54 por alogic.on »

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Cuidado con CCS & ASM
« Respuesta #11 en: 16 de Enero de 2009, 19:03:53 »
A mi me parece un bug del propio compilador. Un código escrito en ASM no lo debe de tocar bajo ningún concepto, ya que se entiende que si lo has escrito expresamente en ASM es por alguna razón de peso (velocidad, ahorro memoria, precisión, etc) y por lo tanto al optimizarlo puede pasar como a ocurrido que lo estropee en vez de mejorarlo.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Cuidado con CCS & ASM
« Respuesta #12 en: 16 de Enero de 2009, 19:37:41 »
Yo creo que el compilador solo sigue reglas de reemplazo, no es que sea muy listo...
En el caso del salto, lo reemplazo por una macro que ahorra un ciclo y listo, no se puso a averiguar porque razon (si es que la habia) el programador lo hizo de esa forma.... :lol: :lol:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Cuidado con CCS & ASM
« Respuesta #13 en: 16 de Enero de 2009, 21:32:43 »
es #asm #endasm... osea embebido dentro de un programa de c del compilador ccs, que es lo que se ve en la ventana de la izquierda. En la ventana de la derecha la memoria de programa del pic.

Pues entonces me parece un error garrafal por parte del CCS. Yo quiero que cuando escribo en ASM me lo respete escrupulosamente, precisamente por eso escribo ASM, para hacer exactamente lo que yo quiero hacer, no lo que interprete el programdor del compilador.  :?
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania


 

anything