Autor Tema: Duda en mi conciencia, simplemente una respuesta "ASM Vs C"!!!  (Leído 4762 veces)

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

Desconectado DieccoF

  • PIC10
  • *
  • Mensajes: 16
Duda en mi conciencia, simplemente una respuesta "ASM Vs C"!!!
« en: 23 de Septiembre de 2006, 10:02:48 »
Buenas gente, tengo una gran confucion en mi cabeza, les cuento y quiero una pregunta lo mas sincera posible 

Se programar en Assembler, aprendi bien y hace tiempo que lo hago para el 16F84, e derivado a otros pics de la gama baja, media y no mas de 16F877 programando en Assembler, mas adelante derivare a los DSPic. Por un lado me encanta este lenguaje (ASM) ya se me transformo en vicio y me cuesta soltarlo, pero en el fondo siento que debo aprender a programar en C por que ya me lo han dicho varios, entonces mi pregunta es para ustedes y ojala reciba la respuesta mas sincera

Que debo hacer, SEGUIR CON EL "ASSEMBLER" O MIGRAR AL "C" ?????

                                            Desde ya Muchas Gracias.....

Desconectado Arbolito

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 893
Re: Duda en mi conciencia, simplemente una respuesta "ASM Vs C"!!!
« Respuesta #1 en: 23 de Septiembre de 2006, 12:16:33 »
En mi humilde opinion te aconsejaria que migres a C, es mas comodo rapido
Si no supieras ASM te diria que aprendas C y luego el ASM pero como ya programas en ASM metele al C veras que cuando te acostumbres tampoco querras cambiarlo.
un saludo
Existo, aunque pienses que no pienso

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Duda en mi conciencia, simplemente una respuesta "ASM Vs C"!!!
« Respuesta #2 en: 23 de Septiembre de 2006, 12:56:49 »
Hola DieccoF, como por ahora as programado en .asm en las familias bajas y medias de los PIC, solo tienes 35 instrucciones del .asm, pero por ejemplo y siguiendo tu idea para el DSPic pasan a ser casi 250 instricciones con sus derivadas, algo muy dificil de recordar de memoria, por lo tanto creo que para las familias 18F en adelante lo mejor es el C, y eso te lo digo como un fanático del asembler que soy.

Un saludo.

Atte. CARLOS.
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Duda en mi conciencia, simplemente una respuesta "ASM Vs C"!!!
« Respuesta #3 en: 23 de Septiembre de 2006, 15:53:40 »
Buenas gente, tengo una gran confucion en mi cabeza, les cuento y quiero una pregunta lo mas sincera posible 

Se programar en Assembler, aprendi bien y hace tiempo que lo hago para el 16F84, e derivado a otros pics de la gama baja, media y no mas de 16F877 programando en Assembler, mas adelante derivare a los DSPic. Por un lado me encanta este lenguaje (ASM) ya se me transformo en vicio y me cuesta soltarlo, pero en el fondo siento que debo aprender a programar en C por que ya me lo han dicho varios, entonces mi pregunta es para ustedes y ojala reciba la respuesta mas sincera

Que debo hacer, SEGUIR CON EL "ASSEMBLER" O MIGRAR AL "C" ?????
                                            Desde ya Muchas Gracias.....

DieccoF , estoy alineado con el pensamiento de Carlos.  Pero también depende de qué quieres hacer con los PIC o con los dsPIC.  Si tu interes es hacer un par de programas y nada más o bien dedicar tu vida al tema y convertirte en un desarrollador de sistemas embebidos o un "embedded developer" como le dicen los Norteamericanos.

También empecé con el assembler en los 16F, y en los 18F.  Para un proyecto largo, lo más aconsejable es usar el C aunque tengo proyectos hechos en assembler en los 16F que ocupan casi 8Kwords!! Imposible que entre ese código si lo hubiera hecho en C.

Para aprender a fondo la arquitectura el único camino que hay, en mi opinión es el assembler.

Soy fan del assembler porque soy fan de conocer el micro que programo, aún así en los 18F programo casi 100% en C.  Las razones son varias:

. Me ahorro tiempo en el desarrollo
. Mis códigos son más fáciles de transportar de un 18F a otro 18F.
. Me permite abstraer problemas complejos de una forma más amena cuando hay muchos condicionales en la decisión de algunas cuestiones.  Por ej. un software que debe tomar decisiones en función del resultado de muchas variables, el C es más directo. En una sola línea puedes poner un código que en assembler podría ocupar 20 o 50 líneas.
. A medida que fue pasando el tiempo han ido cayendo a mis manos proyectos cada vez más complejos, con montones de cosas para controlar, estímulos que afectan el comportamiento del hardware y posibilidades de conexión con el exterior.

Podría citar otras razones pero creo que estas son las más importantes.

Conozco la arquitectura de los 18F, eso me permite saber cómo codificar en C para que el código se ejecute más rápido y por otra parte ocupe menos!.  El hecho de programar en C no significa que debes olvidarte de todo y darle (esto es muy común).   

Eso sirve para un proyecto pequeño o para pequeñas cosas.  Cuando debes hacer un proyecto que cuenta con muchas variables y varios condicionales, es fácil que en seguida llenes tu memoria de programa si no has sido cauteloso en estas cosas.  No siempre la solución está en gastar unos dólares más y comprar un pic mas grande.   A veces la solución pasa por conocer mejor la arquitectura y sacarle provecho.  Esto , es un punto fundamental sobre todo en proyectos del cual se harán cientos o miles de unidades donde cada centavo de dólar cuenta.

Si alguna parte del código es crítica en tiempo o espacio, la codifico en assembler sin dudarlo. 

Aún trabajando con dsPIC te sugiero que le eches un vistazo profundo a la datasheet, a la arquitectura de estos microcontroladores.  Es cierto que tienen muchas instrucciones pero no por eso vas a codificar un filtro en assembler toda tu vida.  Al menos échale un vistazo.

Conocer al arquitectura te permite poder encontrar errores en tus programas que si no lo sabes no los verás nunca.

Habiendo pasado por los 10F, 12F, 16F y 18F, te digo que asi mismo cuando viene un nuevo proyecto a mis manos analizo bien que pic usar.   No porque ahora codifico en C18 en los 18F decidiré usar un PIC18 para todos mis proyectos!

a) Si tu proyecto se hará en pequeñas unidades y se le irán agregando cosas con el tiempo y además tienes margen económico para trabajar, entonces claro un 18F gana siempre.  En ese caso lo codifico en C.  Además uso el C18.  Este no es el compilador más fácil o el que tenga mayor cantidad de librerías pero sí es muy versátil y configurable y puedes hacer cosas que con otros no se puede. 

b) Ahora bien si te llega un proyecto del que se harán miles y debes meter un complejo firmware en un pic con 2Kword de memoria de programa y escasa RAM, bueno, ese proyecto lo hago en assembler.


Como resumen, aprende C, usa C, pero conóce el assembler así podrás tener el control y el conocimiento sobre lo que estás haciendo tú y lo que está haciendo tu PIC. 

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 jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Duda en mi conciencia, simplemente una respuesta "ASM Vs C"!!!
« Respuesta #4 en: 23 de Septiembre de 2006, 15:55:28 »
Por favor no postees el mismo tema en varios foros, con uno es suficiente.

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 PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Duda en mi conciencia, simplemente una respuesta "ASM Vs C"!!!
« Respuesta #5 en: 23 de Septiembre de 2006, 19:26:00 »
puedes mezclar los 2 lenguajes(siempre que tu compilador lo permita)

- para las cosas rapidas y de precisión: el ASM
- para las cosas muy grandes y complejas: el C

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

Desconectado DieccoF

  • PIC10
  • *
  • Mensajes: 16
Re: Duda en mi conciencia, simplemente una respuesta "ASM Vs C"!!!
« Respuesta #6 en: 25 de Septiembre de 2006, 20:03:27 »
Agradesco eternamente sus opiniones, en especial la aclaracion de nuestro amigo de cordoba argentian, me parece bien aprender en C es la conclusion que saco, hacique a partir de ahora, comenzare a programar en ese lenguaje, lo que no significa que abandone el assembler, voy a ver como puedo llevar los dos juntos en uno mismo sin que uno le quite a otro.

Mi pregunta es, ya que de compiladores C no conozco. Cada micro tiene su propio compilador C o existe uno general uno para todos???

Si es asi por favor recomendarme que obtener para luego seguir!!!

Se puede combinar C con assembler en un mismo programa ???

                                            Gracias...

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Duda en mi conciencia, simplemente una respuesta "ASM Vs C"!!!
« Respuesta #7 en: 25 de Septiembre de 2006, 20:06:00 »
Hola.
Hay varios compiladores C para PICS. Cada uno con ciertas ventajas y desventajas segun las librerias disponibles en cada uno, y las familias/modelos de PICs soportados.

Es posible creo que en todos mezclar codigo C con ASM.
Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Duda en mi conciencia, simplemente una respuesta "ASM Vs C"!!!
« Respuesta #8 en: 25 de Septiembre de 2006, 20:09:50 »
El "C" es un lenguaje general de programación que sirve para cualquier micro (incluido el micro de los PC's), eso si despues cada uno tienes sus peculiaridades dependiendo de los micros. Si uno aprende "C" con unas pocas modificaciones podra programar cualquier micro. Respecto a si pueden coexistir "C" y "ASM", la respuesta es sí.

Desde "C" se puede llamar a código en "ASM".

Por estos lares el compilador que mas se utiliza es el de CCS, habiendo muchos ejemplos y programas realizados. Creo que para empezar te puedes bajar una versión demo.

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 BINARIO

  • PIC16
  • ***
  • Mensajes: 156
Re: Duda en mi conciencia, simplemente una respuesta "ASM Vs C"!!!
« Respuesta #9 en: 12 de Abril de 2007, 14:34:10 »

Con los respetos que se merecen Maunix y Palitroque les digo que se equivocan.

C definitivamente es la opcion para cualquier programador que necesite sacar productos al mercado, es OBLIGATORIO dominar el asm, porque uno sabe lo que esta pasando a nivel Hardware en nuestra placa, pero una vez que eso es tema conocido, les dire que se debe manejar C, simplemente por una sencilla razon, NI EL MEJOR DE LOS PROGRAMADORES DE ASM QUE EXISTA PUEDE COMPETIR CONTRA EL COMPILADOR DE C. Es un echo uno puede decidir si quiere optimizar su tamaño en tamaño o en velocidad, por eso les digo que por mas bueno que seas como programador estoy mas que seguro que tal vez y con mucha suerte y experiencia podrias igualar al compilador de C.
Aclarado esto, amigo te recomiendo que si sabes ASM y no quieres perder tu tiempo programando 5000 lineas de codigo para hacer un reloj con 4 o 5 alarmas, migres definitivamente a C, ya que por lo que dices manejas el ASM, seguro en algun momento lo vas a necesitar, pero con la memoria actual de los micros, e inclusive sin disponer de tanta, C optimizara tu programa mas de lo que tu podrias hacerlo programando en ASM. Mucha suerte

 :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100 101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00 00011111111 0011111 011110001111111111 1011111111101100000000

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Duda en mi conciencia, simplemente una respuesta "ASM Vs C"!!!
« Respuesta #10 en: 12 de Abril de 2007, 14:54:53 »
Binario... no discutiré contigo.  Solo creo que estás confundido.

Un compilador de C genera siempre algo más de código que un ensamblador.   Un compilador de C, para cualquier equipo en el mejor de los casos generará el mismo código en ASM que alguien que sepa programar en ASM.

Por supuesto, hablamos de alguien que sepa programar en assembler y no de un novato que escriba 40 veces las mismas cosas.

Por último, te invito a que investigues más del tema, no solo para un pic (donde las diferencias son aún más a favor del assembler) sino para una plataforma tipo PC donde la memoria de datos y programa, son compartidas y esto optimiza aún mas el uso de punteros y demases.  Aún así, ningún compilador de C logra igualar a un buen programador en ASSEMBLER.

Si hablamos de "generar código en unas horas" C es la opción.  En unas horas tienes un soft andando sin saber mucho del tema.  Si hablamos de "mantenibilidad", C de nuevo es la opción

Si hablamos de generar el código más óptimo posible, Assembler es la única opción en cualquier plataforma, micro o cosa que se te ocurra elegir.

El C no genera código cualquiera, el C genera código assembler y no deja de ser un software, por ende un código en C nunca puede ser más óptimo que uno en assembler

Es como decir que 1 < 1....


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 BINARIO

  • PIC16
  • ***
  • Mensajes: 156
Re: Duda en mi conciencia, simplemente una respuesta "ASM Vs C"!!!
« Respuesta #11 en: 13 de Abril de 2007, 11:12:43 »

bueno maunix, mi intencion tampoc era discutir contigo, estamos de acuerdo los dos que el c genera codigo asm, es por ello que te recuerdo que el compilador de C es no solo optimo sino que rapido y no es lo mismo pasarse 1 mes haciendo 8000 lineas de codigo que hacer un codigo corto en c y optimizar la compilacion para un micro determinado, en esta parte el compilador de C te generara un codigo en asembly que sera optimo segun tus necesidades en ciclos de reloj o en tamaño de programa en bytes, bueno salvado el mal entendido te mando un gran abrazo colega y coprovinciano cordobes. Respeto tu trayectoria y tus conocimientos y seguramente un buen programador podria lograr realizar un codigo mas optimo que el del compilador de c, en cualquier sistema basado en micro, ya sea un receptor de BLU, un radar, un Ordenador, un pequeño termometro, lo que sea de electronica, pero aca hablamos prontamente de factor tiempo, yo soy un enamorado del asm pero veo que es mejor programar en C por el factor tiempo y el factor optimizacion, bueno te saludo nuevamente.

 :-/ :-/ :-/ :-/ :-/ :-/ :-/
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100 101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00 00011111111 0011111 011110001111111111 1011111111101100000000

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Duda en mi conciencia, simplemente una respuesta "ASM Vs C"!!!
« Respuesta #12 en: 13 de Abril de 2007, 11:34:54 »
Si, por supuesto.  Nadie discute que programar en ASM ahorra tiempo, solo quería aclarar el punto de que un C no es más óptimo que ASM en código generado, por las razones que expliqué anteriormente.

Eso era todo.

Yo también se de Assembler pero sin embargo en la mayoría de mis proyectos uso C. 

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 groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Duda en mi conciencia, simplemente una respuesta "ASM Vs C"!!!
« Respuesta #13 en: 16 de Abril de 2007, 17:29:26 »
hola,estoy leyendo la discusion que teneis con asm y c,por mi parte decir que que no tengo ni idea de c,y que desde que empeze a programar ensembler del Z80.
y luego los pic;
he intentado aprender c.pero cuando veo la cantidad de comandos y el orden que hay que seguir ,me da miedo aprenderlo.aunque se que algun dia tendre que hacerlo,pero solo porque se esta estandarizando,y cada dia hay menos gente que se decante por el ensembler,gracias a la potencia y abaratamiento de circuitos integrados.
la verdad es que estoy enamorado del asm,es lo mas cercano al chip.despues del codigo de maquina.y me gusta la perfeccion,que no es el C.
supongo que algunas personas nos desenvolvemos mejor con un lenguage que con otro.

asi que cada uno se decante por sus gustos o facilidad de desenvolverse. :-),y ante la duda .el ensembler.


Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado Menta

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 607
Re: Duda en mi conciencia, simplemente una respuesta "ASM Vs C"!!!
« Respuesta #14 en: 17 de Abril de 2007, 02:07:55 »
Este es un tema de nunca acabar...

Siempre algunos van a tener que "pensar" en asm incluso en binario. Esos son los que desarrollan los micros, las herramientas de desarrollo y los compiladores.
El usuario final,  me refiero al desarrollador, se convertirá poco a poco en "un mero creador de aplicaciones" (citando al autor Mariano Birnios)
La programación de pics, sigue la tendencia de los lenguajes de alto nivel para pc. Varios pasos atraz aún y en forma más lenta, pero en la misma dirección, para bien o para mal.

Yo no puedo programar en asm teniendo el C. Aun sacrificando esa sensación de mayor control que asm brinda... Pero esa es una apreciación muy personal, más allá de los argumentos.
     


 

anything