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


       



#31  
Chico3001
Ubicación: Mexico, D.F.
Registrado: 09 Jul 2006
Mensajes: 615
citar
Todos los compiladores de C generan codigo ensamblador, ya que el micro no entiende otra cosa que no sea ensamblador, pero la funcion del compilador C es hacernos la vida mas simple al darnos instrucciones que nosotros entendemos

Casi todos los compiladores traen una funcion en el menu que dice "Ver codigo maquina" o en los archivos de salida generan un archivo *.lst que es la traduccion C--->Ensamblador--->Codigo Maquina

#32  
mabauti
Ubicación: México
Registrado: 22 Oct 2006
Mensajes: 1133
citar
Lo que genaran es codigo binario (codigo maquina) , el ensambaldor es un nivel arriba del codigo maquina

#33  
Chico3001
Ubicación: Mexico, D.F.
Registrado: 09 Jul 2006
Mensajes: 615
citar
mabauti escribió: Lo que genaran es codigo binario (codigo maquina) , el ensambaldor es un nivel arriba del codigo maquina


Efectivamente... pero el archivo lst ya contiene los nmemonicos equivalentes junto con el codigo maquina binario y ademas vienen agrupados para que indiquen que instruccion en C se intento traducir...

#34  
eidtech
Ubicación: México, DF
Registrado: 23 Jul 2006
Mensajes: 248
citar
mabauti escribió: Lo que genaran es codigo binario (codigo maquina) , el ensambaldor es un nivel arriba del codigo maquina


En realidad lo que genera un compilador, es un asm... de ahi se lo pasa al "ensamblador" y luego al linker...

Una de las principales tareas del compilador es generar un muy buen asm, lo mas optimo posible.

#35  
LaloMon
Ubicación: manzanillo
Registrado: 20 Jun 2008
Mensajes: 4
citar
como genero el archivo .asm desde el compilador de borland C o cualquier otro compilador... lo que yo ucupo es el archivo .asm para meterlo a otro programa...


Me pueden explicar porfa

#36  
_Eduardo_
Ubicación: Santo Tome - Santa Fe - Argentina
Registrado: 06 Ene 2008
Mensajes: 1168
citar
LaloMon escribió: como genero el archivo .asm desde el compilador de borland C...

? ? ? Llamando al compilador sin argumentos te devuelve un resumen de las opciones de compilacion.
Para generar una salida en assembler es -S

Ej: BCC32 -S programa.cpp (lo mismo para 16bits o prog.c)

#37  
426ivan
Ubicación: Catamarca, Argentina
Registrado: 22 Ene 2006
Mensajes: 27
citar
En el CCS podés poner

#asm

y aqui todas las instrucciones en ASM que quieras, finalizando con:

#endasm

y listo. Así se pueden mezclar ambos mundos sin problemas.
No querrás realizar una multiplicación de por ejemplo: 8*9 en assembler de pic.
En lo haces muy fácil y sin problemas, y para manejar los ADs como te dicen más arriba basta con utilizar el ASM.

Saludos!

#38  
piratex
Ubicación: Temuco, Chile
Registrado: 27 Ene 2007
Mensajes: 32
citar
Lamentablemente el C tiene esas falencias de compilar un codigo NO muy optimo en comparacion con el generado ensamblando.
Pero la rapidez y la facilidad con la que se hacen complicados programas en C me han hecho optar por el.

el CCS (compilador de C para micros) Full.... busquenlo en mi web..

#39  
Javier Rambaldo
Ubicación: Rosario, Argentina
Registrado: 14 Jun 2007
Mensajes: 95
citar
Estoy de acuerdo con piratex (...que nombre!...), y a veces la compilación no solo es mala en optimización, sino que errada.
No se si el CCS tiene errores, pero el compilador MikroC si los tiene!
Por ejemplo, este simple código:
if(cont++ >10) {
cont = 0;
}
Si ven el ASM que genera el mikroC, nunca se incrementa el contador!

Por eso no hay como el assembler, que será mas lento y tedioso pero es eficiente y hace lo que yo quiero.

#40  Hay que leer y mucho.
fitocondria
Ubicación: Tabasco y Veracruz. Mexico
Registrado: 09 Jun 2007
Mensajes: 64
citar
Claro todo esto para arquitectura de 8 bits.
Yo programo en C++, y en C para pc.

Pero desde que comence a hacerlo para microcontroladores, siempre quede decepcionado. Y para que al final no sean compatibles los C de los fabricantes de compiladores de C. No he entrado ya últimamente a postear porque me atore en un problema, en el cual la sintaxis y la logica estaban bien de acuerdo a las reglas de C. Sin embargo no hacia su trabajo la madre esa.

Lo desensamble solo para corroborrar que el buey no estaba manejando el apuntador como un apuntador sino como una variable más común que corriente, y leyendo durante una semana en los manuales en un ejemplo nada que ver con apuntadores aparecio la respuesta, VOLATILE era la solución a mis plegarias. Sin la cual el compilador tomaba el contenido de mi apuntador y lo pasaba a un registro y trabajaba con ese registro no con la dirección de ahi en lo sucesivo. Que poca.

Y cuando utilizo volatile en la declaración de mi apuntador, asunto resuelto. Que poca. Casi me revolcaba y me salía espuma por la boca, sino fuera por la felicidad de que el programa estaba funcionando.

En conclusión, quieres C standard en tu microcontrolador, utiliza un micro con mucha memoria o usas c para chingaderillas(por chingaderillas me refiero a cosas que haría uno en una pc). por ejemplo si utlizas printf ya se indigesta el microcontrolador, a menos que sean versiones recortadas. Prefiero mezclar C y ensamblador en proyectos grandes que solo utilizar C. C es bueno para unas cosas pero para otras es mejor utilizar ensamblador, y si hablamos que se les esta ocurriendo meter ahora java (jajajajajajajaja) tiene * en el cerebro, y lo digo por los celulares que son cada vez más lentos con la porque... hay otras cosas mejores que usar y disponibles. Claro todo esto para arquitectura de 8 bits.

 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 ||
Contacto | Acerca de | Ayuda | Normas de la Comunidad | Privacidad | Mapa de los foros
© Foros de Electrónica - Comunidad Internacional de Electrónicos