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 |
|
 |
| Publicado: Mar Feb 20, 2007 10:19 pm |
|
|
 |
 |
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.
|
|
|
|
heli
| Ubicación: Alcalá de Henares (Madrid, España) |
| Registrado: 30 Ene 2007 |
| Mensajes: 177 |
|
 |
| Publicado: Mie Feb 21, 2007 1:44 am |
|
|
 |
 |
¡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.
|
|
|
|
cubeusk
|
| Registrado: 22 Feb 2007 |
| Mensajes: 36 |
|
 |
| Publicado: Jue Feb 22, 2007 7:01 am |
|
|
 |
 |
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
|
|
|
|
Aristides
| Ubicación: Mar del Plata, Argentina |
| Registrado: 21 Oct 2006 |
| Mensajes: 322 |
|
 |
| Publicado: Jue Feb 22, 2007 7:47 am |
|
|
 |
 |
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).
|
|
|
|
cubeusk
|
| Registrado: 22 Feb 2007 |
| Mensajes: 36 |
|
 |
| Publicado: Jue Feb 22, 2007 3:26 pm |
|
|
 |
 |
Yo para programar los 51 utilizo la demo del compilador para C de Keil (mejorado, ya sabeis  ) 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.
|
|
|
|
macraig
|
| Registrado: 27 Abr 2007 |
| Mensajes: 145 |
|
 |
| Publicado: Vie Mar 21, 2008 9:04 pm |
|
|
 |
 |
Mi respuesta es definitivamente C. No creo q se hubiera llegado muy lejos si todavia programaramos las computadoras en assembler...
Salu2
|
|
|
|
mabauti
| Ubicación: México |
| Registrado: 22 Oct 2006 |
| Mensajes: 1085 |
|
 |
| Publicado: Vie Mar 21, 2008 9:43 pm |
|
|
 |
 |
C para grandes programas y ASM para eficiencia de uso de memoria
|
|
|
|
WillyP
| Ubicación: Argentina |
| Registrado: 18 Mar 2008 |
| Mensajes: 28 |
|
 |
| Publicado: Jue Mar 27, 2008 10:54 am |
|
|
 |
 |
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.
|
|
|
|
Javier Rambaldo
| Ubicación: Rosario, Argentina |
| Registrado: 14 Jun 2007 |
| Mensajes: 95 |
|
 |
| Publicado: Jue Mar 27, 2008 12:00 pm |
|
|
 |
 |
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.
|
|
|
|
macraig
|
| Registrado: 27 Abr 2007 |
| Mensajes: 145 |
|
 |
| Publicado: Jue Mar 27, 2008 3:02 pm |
|
|
 |
 |
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.
|
|
|
|
|
 | Foros de Electronica |  |
|
 |