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

Registrado: 09 Jul 2006
Mensajes: 415
Ubicación: Mexico, D.F.
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

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

#33  
Chico3001

Registrado: 09 Jul 2006
Mensajes: 415
Ubicación: Mexico, D.F.
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

Registrado: 23 Jul 2006
Mensajes: 240
Ubicación: México, DF
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

Registrado: 20 Jun 2008
Mensajes: 4
Ubicación: manzanillo
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_

Registrado: 06 Ene 2008
Mensajes: 1007
Ubicación: Santo Tome - Santa Fe - Argentina
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

Registrado: 22 Ene 2006
Mensajes: 26
Ubicación: Catamarca, Argentina
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

Registrado: 27 Ene 2007
Mensajes: 27
Ubicación: Temuco, Chile
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

Registrado: 14 Jun 2007
Mensajes: 95
Ubicación: Rosario, Argentina
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

Registrado: 09 Jun 2007
Mensajes: 63
Ubicación: Tabasco y Veracruz. Mexico
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





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