Autor Tema: Probando asm en 18F  (Leído 8433 veces)

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

Meta

  • Visitante
Probando asm en 18F
« en: 21 de Febrero de 2008, 02:44:13 »
Muy buenas:

Me gustaría saber si alguien a probado hacer algo con un PIC 18F2550 o 18F4550 en asm. Son 77 instrucciones frente a los 35 de la gama 16F. Estoy aprendiendo a utilizar todas del 16F84A y veo que algunas del 18F son muy cómodas y se puede trabajar con menos código.

La mayoría veo que está con el C, ¿y en asm cómo les va?

Un buen saludos a todos.
« Última modificación: 21 de Febrero de 2008, 02:46:54 por Meta »

Meta

  • Visitante
Re: Probando asm en 18F
« Respuesta #1 en: 21 de Febrero de 2008, 03:42:50 »
18F tiene 31 Stack o pila. Cada vez lo veo que esta gama es más potente de lo que creía.

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Re: Probando asm en 18F
« Respuesta #2 en: 19 de Marzo de 2008, 13:36:46 »
Umm!! bueno yo no lo he usado, pero tengo un amigo que si lo ha hecho y le ha ido bien!!!
A mi parecer creo que serian más largos los programas por el poco de instrucciones que tiene el 4550 frente al 877!!! jejeje para este caso me quedo con C :D

Atte: Enigma... La llanerita de Guayana :-)
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Probando asm en 18F
« Respuesta #3 en: 19 de Marzo de 2008, 15:04:00 »
A mi parecer creo que serian más largos los programas por el poco de instrucciones que tiene el 4550 frente al 877!!! jejeje para este caso me quedo con C :D

En realidad es al revés.  El 18F4550 tiene un set de instrucciones mucho más amplio y rico que involucra las mismas que están presentes en los 16F pero con algunas mejoras y agregados.  Por ende un programa en un 18F siempre te ocupará igual o menos espacio que un programa idéntico en un 16F.

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 Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Probando asm en 18F
« Respuesta #4 en: 19 de Marzo de 2008, 18:49:31 »
off topic: ¿vieron que raro lo de Meta? figura que no tiene mensajes, pero de echo tiene dos, y más, ya que lo he visto en otro foro.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Probando asm en 18F
« Respuesta #5 en: 19 de Marzo de 2008, 21:07:00 »
No es raro León, hubo un problema con la cuenta y se perdió el contador de este usuario.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Probando asm en 18F
« Respuesta #6 en: 20 de Marzo de 2008, 10:52:19 »
OK, Muchas gracias.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Re: Probando asm en 18F
« Respuesta #7 en: 20 de Marzo de 2008, 13:31:08 »
Cita de: maunix
En realidad es al revés.  El 18F4550 tiene un set de instrucciones mucho más amplio y rico que involucra las mismas que están presentes en los 16F pero con algunas mejoras y agregados.  Por ende un programa en un 18F siempre te ocupará igual o menos espacio que un programa idéntico en un 16F.


Si, en ese concuerdo contigo!! pero yo me referia a que por lo menos un programa en ASM de un 18F siempre será más largo que un programa en C del mismo 18F.... y también me atreveria a decir sin arrepentirme de ello, que un programa en ASM de un 16F es todavia más largo que un programa en C de un 18F con todo y el poco de instrucciones nuevas!!!!  :D A eso me referia!!!!! :lol:

Atte: Enigma... La llanerita de Guayana :-)
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Probando asm en 18F
« Respuesta #8 en: 20 de Marzo de 2008, 14:56:23 »
Si, en ese concuerdo contigo!! pero yo me referia a que por lo menos un programa en ASM de un 18F siempre será más largo que un programa en C del mismo 18F.... y también me atreveria a decir sin arrepentirme de ello, que un programa en ASM de un 16F es todavia más largo que un programa en C de un 18F con todo y el poco de instrucciones nuevas!!!!  :D A eso me referia!!!!! :lol:

La confusión surge porque no está muy claro a que te refieres con programa largo, si te refieres a cantidad de líneas de código, es cierto y coincido contigo.  El C hará con pocas instrucciones lo mismo que en assembly hay que hacer en varias (de hecho ese es el fin de los lenguajes, poder en pocas palabras definir conceptos complejos que luego se traducen en varias instrucciones).

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 Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Probando asm en 18F
« Respuesta #9 en: 20 de Marzo de 2008, 15:06:29 »
Consulta: Estoy un poco confundido. Yo tengo entendido que el C, hace más largo los programas que en assembly, hablo claro en la familia 16, pero en la familia 18 ¿pasa alreves? o sea, ¿el lenguaje C hace más corto los programas que en assembly?
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Probando asm en 18F
« Respuesta #10 en: 20 de Marzo de 2008, 15:55:23 »
La familia de los 18 tiene instrucciones encaminadas a la optimización del lenguaje c. Una sentencia de lenguaje c puede ser más larga al ser compilada en un 16F que en un 18F, porque el 18F tiene códigos de operación más detallados que el 16F. En los 16F no existe la multiplicación, pero en los 18F sí la hay... en lenguaje c tomará muchas más instrucciones para lograrla en 16F que en 18F.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Probando asm en 18F
« Respuesta #11 en: 20 de Marzo de 2008, 16:08:23 »
Vamos a ver si soy capaz de arrojar un poco de luz a este tema.

Programadores obtusos hacen programas ineficientes. Con esto quiero decir que un programador poco ducho en la materia es capaz de hacer un mal programa en ASM, tan ineficiente como uno en C o en BASIC generado por un compilador.

Programadores hábiles hacen programas eficientes en ASM, en C o en BASIC. Pero y esto es lo importante, un programa en C o en BASIC nunca será mas eficiente que un programa eficiente escrito en ASM.

¿Por qué es esto así? Porque nada puede ser mas eficiente que algo eficiente escrito en ASM. En ASM hay una relación directa entre lo que se escribe, mnemónicos, y lo que se genera, código máquina, para enviárselo al PIC. El compilador traduce un instrucción de alto nivel a una secuencia de mnemónicos ASM que hacen lo mismo. Es lo que podemos ver en CCS C, por ejemplo, al editar el fichero .lst que genera, que no es mas que la traducción de C a ASM que ha realizado el compilador.

Por eso todo lo más que pueden hacer los compiladores en C ó BASIC es hacer lo mismo, pero no más.

Ten en cuenta que el compilador nos va a ofrecer, nos va a ayudar con el conocimiento de ASM que tenían los creadores del compilador. Y que si este conocimiento, este saber hacer, de los creadores del compilador es eficiente generará código máquina eficiente en su compilado.

Luego el tema no es si en ASM o en C salen los programas mas cortos o rápidos o eficientes, sino si tú programando en ASM eres capaz de hacer programas mas cortos o rápidos o eficientes de lo que el creador del compilador es capaz de compilar un código tuyo en C haciendo lo mismo.

Puedes ver que este párrafo anterior que te he puesto es un párrafo trampa: Tú en ASM  luchando por conseguir brevedad, rapidez o eficiencia contra la unión de ti mismo escribiendo en C y la capacidad para traducir tu C a ASM de los creadores del compilador.

Por todo esto a tu pregunta se puede contestar con una sola palabra: Depende.

Depende de la brevedad, rapidez o eficiencia de quien escribe el programa en ASM, depende de la brevedad, rapidez o eficiencia de quien escribe el programa en C y depende de la brevedad, rapidez o eficiencia de quien traduce tu programa en C a ASM.

Cuando se dice que el C de los PIC18 está diseñado para ser eficiente, quieren decir que los creadores de los PIC18 y del C18, que trabajan ambos para Microchip, se han puesto de acuerdo para implementar instrucciones ASM que acerquen, que sean de fácil traducción entre ellas y el correspondiente código en C.

Fíjate en la frase que viene en el Datasheet del PIC18F4550 sobre el C: "C compiler optimized architecture with optional extended instruction set", El compilador de lenguaje C optimiza la arquitectura con el conjunto opcional de instrucciones ampliada. Esto quiere decir que tiene instrucciones ASM que "se parecen" mas a instrucciones C por lo que la conversión es mas directa.

O sea lo que te estoy diciendo, pero nada que ver con que pueda ser mejor que hacerlo "a pelo" en ASM usando tú esas mismas instrucciones.

No se si habré sabido explicarme.  :mrgreen:
« Última modificación: 20 de Marzo de 2008, 16:10:45 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Probando asm en 18F
« Respuesta #12 en: 20 de Marzo de 2008, 16:13:32 »
Consulta: Estoy un poco confundido. Yo tengo entendido que el C, hace más largo los programas que en assembly, hablo claro en la familia 16, pero en la familia 18 ¿pasa alreves? o sea, ¿el lenguaje C hace más corto los programas que en assembly?

A lo que apuntaba la llanerita es a otra cosa, no a código generado sino al texto que ves en tu pantalla cuando escribes.

Un programa en C podría ser algo así como


   int a, b, c;

   a = 20;
   b = 30;
   c = 10 + a*b;
   



Hacer eso en assembly ocuparía varias líneas... varías... a eso se refería la llanerita.
- 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 Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Probando asm en 18F
« Respuesta #13 en: 20 de Marzo de 2008, 21:21:03 »
Maunix, pues tiene razón, yo interpreté otra cosa que tanto migsantiago, JCC40 y redpic me explicaron lo que necesitaba saber.

Les agradezco a los 4, ya la duda quedó despejada (al menos para mi)  :mrgreen:

Red Pic, es verdad de que depende del programador, a lo que me refería que por ejemplo un programador muy hábil en assembly y que también sea muy hábil en C, pero también ya lo explicaste.

Un saludo :-/ :-/
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.