Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




C vs ASM


       



#11  para aplicaciones en tiempo real
strakk82
Registrado: 19 Dic 2006
Mensajes: 22
citar
Hola, apuntar que para aplicaciones en tiempo real es mejor usar asm porque puedes calcular el tiempo que tardan las instrucciones en ejecutarse. Por ejemplo en C igual no sabes cúantas instrucciones se deben ejecutar para calcular una multiplicación, si lo haces en ensamblador lo sabes.

#12  
heli
Ubicación: Alcalá de Henares (Madrid, España)
Registrado: 30 Ene 2007
Mensajes: 177
citar
¡Que manía tenemos todos los programadores de discutir sobre tonterías!
Programar en C o en ensamblador, pues en los dos. Si el compilador es bueno genera un código muy óptimo, igual que si lo hicieras tú mismo en ensamblador. Muchos compiladore te permiten compilar vía ensamblador, es decir, pasar el C a ASM y luego ensamblarlo. De esta forma se puede inspeccionar el ASM para mejorarlo, cambiarlo, o contar el número de microsegundos de una determinada rutina. Muchos compiladores admiten ensamblador en línea, usando la instrucción del preprocesador "#asm" se pueden poner segmentos de ensamblador en medio de un programa en C.
Es como discutir acerca de como ir al trabajo, andando o en autobús. Se vá mucho más rápido y cómodo en autobús, hasta donde te lleve, y luego terminas andando. Programar solo en ensamblador hoy en día es un atraso. Lo general se hace en C y para cosas muy, muy específicas se completa en ensamblador.
Otra cosa es la cuestión académica: hay que estudiar ensamblador aunque se use poco, porque es imprescindible para tener un conocimiento completo de como funcionan los micros.

#13  
cubeusk
Registrado: 22 Feb 2007
Mensajes: 36
citar
Programar en ASM es mas eficaz y potente que en C. Pero C es mucho mas sencillo al ser mas abstracto. Lo mejor suele ser tirar de los dos, es decir, programar en C y luego donde creas poder o necesites optimizar el codigo irte al ASM.

Por otro lado no soy partidario de los PIC, yo soy mas de los AVR y 8051 (AT89C52) pero bueno eso ya harina de otro costal

#14  
Aristides
Ubicación: Mar del Plata, Argentina
Registrado: 21 Oct 2006
Mensajes: 322
citar
cubeusk escribió: Programar en ASM es mas eficaz y potente que en C. Pero C es mucho mas sencillo al ser mas abstracto. Lo mejor suele ser tirar de los dos, es decir, programar en C y luego donde creas poder o necesites optimizar el codigo irte al ASM.

Por otro lado no soy partidario de los PIC, yo soy mas de los AVR y 8051 (AT89C52) pero bueno eso ya harina de otro costal


Estoy de acuerdo casi en todo, yo no programo PIC, pero en cambio SX y Propeller, en el editor del SX "SX/B", lo podés programar en BASIC y luego lo abrís en ASM, por si querés editarlo, también se pueden pegar sobre el BASIC, rutinas en ASM.
El Propeller se Programa en Spin (un lenguaje bastante entendible), también se pueden pegar partes en ASM, pero la principal ventaja es que es orientado a objetos, así que si tenés un rutina para leer el mouse, lo único que debes hacer es llamarla desde el programa (debe estar en el raíz).

#15  
cubeusk
Registrado: 22 Feb 2007
Mensajes: 36
citar
Yo para programar los 51 utilizo la demo del compilador para C de Keil (mejorado, ya sabeis Wink ) y depuro en proteus. Y para los AVR el CodeVision que es muy bueno y muy potente (os recomiendo que lo probeis, hasta un niño podria programar con el) y depuro con AVRStudio o Proteus.

#16  
macraig
Registrado: 27 Abr 2007
Mensajes: 145
citar
Mi respuesta es definitivamente C. No creo q se hubiera llegado muy lejos si todavia programaramos las computadoras en assembler...

Salu2

#17  
mabauti
Ubicación: México
Registrado: 22 Oct 2006
Mensajes: 1101
citar
C para grandes programas y ASM para eficiencia de uso de memoria

#18  
WillyP
Ubicación: Argentina
Registrado: 18 Mar 2008
Mensajes: 28
citar
Hola a todos, creo personalmente que el ensamblador no es nada dificil y complicado si se conocen y entienden las intrucciones del microcontrolador y los bloques internos del pic. Ayuda muchisimo tener conocimiento de electrónica digital, de lo contrario ahí si se complica programar en ensamblador. El C permite programar un micro con exito aunque no se tenga conocimiento de electrónica y pienso que es una de las razones por las que se hizo tan popular ultimamente. Ademas de tener una serie de librerias que solo se copian se compilan y listo. Personalmente prefiero el ensamblador, pero hay cosas muy interesantes en C, por ejemplo la facilidad que brinda programar con estructuras. Por otro lado el C y me refiero al C18 que es el que estoy usando, permite mezclar ensamblador y C invocandolo de forma externa y de esta forma se puede compilar todo un programa escrito en ensamblador junto con C.

#19  
Javier Rambaldo
Ubicación: Rosario, Argentina
Registrado: 14 Jun 2007
Mensajes: 95
citar
No estamos hablando de computadoras... solo de PIC!
Les parece difícil 35 instrucciones?
Para pics de hasta 4k basta con asembler. Sobre todo si ya tienes muchas macros y librerías hechas y funcionando.

Lo bueno de los PICs es que puedes hacer grandes cosas en poco tamaño y bajo costo, pero si usas C puedes excederte en tamaño y seguramente te excedereas en tiempo de ejecución.

#20  
macraig
Registrado: 27 Abr 2007
Mensajes: 145
citar
WillyP escribió: Hola a todos, creo personalmente que el ensamblador no es nada dificil y complicado si se conocen y entienden las intrucciones del microcontrolador y los bloques internos del pic. Ayuda muchisimo tener conocimiento de electrónica digital, de lo contrario ahí si se complica programar en ensamblador. El C permite programar un micro con exito aunque no se tenga conocimiento de electrónica y pienso que es una de las razones por las que se hizo tan popular ultimamente. Ademas de tener una serie de librerias que solo se copian se compilan y listo. Personalmente prefiero el ensamblador, pero hay cosas muy interesantes en C, por ejemplo la facilidad que brinda programar con estructuras. Por otro lado el C y me refiero al C18 que es el que estoy usando, permite mezclar ensamblador y C invocandolo de forma externa y de esta forma se puede compilar todo un programa escrito en ensamblador junto con C.


Este comentario te lo discuto. Para programar en C se necesitan los mismos conocimientos de electronica q necesitas para programar en assembler. Es decir muy pocos.

Todo compilador en C que sea ESTANDARD te permite mezclar codigo en assembler. Es la razon por la que es POPULAR C, (Que por cierto ya es popular desde los 70). En otras palabras, C no es popular por ser un lenguaje facil, sino por que es uno de los pocos lenguajes de alto nivel que te permite descender hasta "Tocar" el hardware subyacente (es decir programar en assembler).

Si tengo que programar un artefacto, digamos el control de una tostadora, en donde debo no solo programar el protocolo de comunicacion con el computador, sino tambien el manejo de los sensores, el control del display LCD, la senal PWM para control de temperatura, la interrupcion del boton de panico, el control PID del expulsor para que el pan no salte al ser expulsado, agradezco poder tener librerias que se encargan de lo basico y asi poder dedicarme a lo que en realidad me interesa, tener el prototipo funcionando rapido para q entre en produccion, y luego poder ir haciendo las optimizaciones en el codigo (usando assembler en las secciones que lo merezcan por velocidad) en las futuras revisiones. Pero claro, si mi proyecto se limita a hacer parpadear un LED, o a lo mucho mostrar un mensaje en un Display, caramba se lo puede hacer en assembler lo suficientemente rapido.

Javier Rambaldo escribió: No estamos hablando de computadoras... solo de PIC!
Les parece difícil 35 instrucciones?
Para pics de hasta 4k basta con asembler. Sobre todo si ya tienes muchas macros y librerías hechas y funcionando.

Lo bueno de los PICs es que puedes hacer grandes cosas en poco tamaño y bajo costo, pero si usas C puedes excederte en tamaño y seguramente te excedereas en tiempo de ejecución.


No son solo pics. Si no te has dado cuenta, evolucionan con velocidad vertiginosa. Tal vez en unos anios, la arquitectura de 8 bits sea algo q solo encuentres en el museo, y el micro menos sofisticado que encuentres sea de 16 o 32 bits.

No obstante, tienes razon. Con tan poca memoria para programa, tal vez C no se justifiq.

Salu2.

 Responder





 Otros temas de interés 
No hay mensajes nuevos Destacado: Programador de microcontoladores PIC Puerto USB
No hay mensajes nuevos Programar un PIC para controlar un TFT
No hay mensajes nuevos Programar el PIC16C765 por el puerto serial y el USB
No hay mensajes nuevos Programar un lm35 en visual basic por el puerto paralelo
No hay mensajes nuevos programar en assembler

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||