Autor Tema: existe un conversor de C a asm?  (Leído 23443 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado cocu3

  • PIC12
  • **
  • Mensajes: 77
existe un conversor de C a asm?
« en: 21 de Enero de 2008, 16:45:53 »
buenas, es q busco la manera de convertir un proyecto echo en C en el CCS en codigo assembler pero nose si esto se pueda
alguno lo ha echo?
saludos

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: existe un conversor de C a asm?
« Respuesta #1 en: 21 de Enero de 2008, 16:51:10 »
El winpic800 del compañero Sisco lo hace. Winpic800.com

Desconectado Rulo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 168
Re: existe un conversor de C a asm?
« Respuesta #2 en: 21 de Enero de 2008, 17:01:34 »

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: existe un conversor de C a asm?
« Respuesta #3 en: 21 de Enero de 2008, 17:33:50 »
buenas, es q busco la manera de convertir un proyecto echo en C en el CCS en codigo assembler pero nose si esto se pueda
alguno lo ha echo?
saludos

Una vez que generas el .HEX , en el mplab puedes ir al Menú View, Program Memory.

Lo que estás buscando es un desensamblador, tienes aquí un hilo.

http://www.todopic.com.ar/foros/index.php?topic=5966.msg39719#msg39719
- 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 MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: existe un conversor de C a asm?
« Respuesta #4 en: 21 de Enero de 2008, 18:22:21 »
En el CCS, una vez que compilas tu proyecto, puedes ingresar a una ventana que muestra el listado en assembler, hay una opcion de menu que se llama C/Asm List .
Lo que muestra es mas o menos asi:

Código: ASM
  1. CCS PCH C Compiler, Version 4.058, 59666               21-Ene-08 18:18
  2.  
  3.                Filename: E:\Archivos de programa\PICC\Projects\ex_can_ccs_a_4580.lst
  4.  
  5.                ROM used: 5422 bytes (17%)
  6.                          Largest free fragment is 27342
  7.                RAM used: 53 (3%) at main() level
  8.                          84 (5%) worst case
  9.                Stack:    4 worst case (3 in main + 1 for interrupts)
  10.  
  11. *
  12. 0000:  GOTO   0D1A
  13. *
  14. 0008:  MOVWF  05
  15. 000A:  MOVFF  FD8,06
  16. 000E:  MOVFF  FE0,07
  17. 0012:  MOVLB  0
  18. 0014:  MOVFF  FE9,0D
  19. 0018:  MOVFF  FEA,08
  20. 001C:  MOVFF  FE1,09
  21. 0020:  MOVFF  FE2,0A
  22. 0024:  MOVFF  FD9,0B
  23. 0028:  MOVFF  FDA,0C
  24. 002C:  MOVFF  FF3,14
  25. 0030:  MOVFF  FF4,15
  26. 0034:  MOVFF  FFA,16
  27. 0038:  MOVFF  00,0F
  28. 003C:  MOVFF  01,10
  29. 0040:  MOVFF  02,11
  30. 0044:  MOVFF  03,12
  31. 0048:  MOVFF  04,13
  32. 004C:  BTFSS  F9D.1
  33. 004E:  GOTO   0058
  34. 0052:  BTFSC  F9E.1
  35. 0054:  GOTO   0422
  36. 0058:  MOVFF  0F,00
  37. 005C:  MOVFF  10,01
  38. 0060:  MOVFF  11,02
  39. 0064:  MOVFF  12,03
  40. 0068:  MOVFF  13,04
  41. 006C:  BSF    0E.7
  42. 006E:  MOVFF  0D,FE9
  43. 0072:  MOVFF  08,FEA
  44. 0076:  MOVFF  09,FE1
  45. 007A:  MOVFF  0A,FE2
  46. 007E:  MOVFF  0B,FD9
  47. 0082:  MOVFF  0C,FDA
  48. 0086:  MOVFF  14,FF3
  49. 008A:  MOVFF  15,FF4
  50. 008E:  MOVFF  16,FFA
  51. 0092:  MOVF   05,W
  52. 0094:  MOVFF  07,FE0
  53. 0098:  MOVFF  06,FD8
  54. 009C:  RETFIE 0
  55. .................... ////

Es solo un pedazo del codigo asm generado, seria muy largo sino, y esta hecho para un PIC18F4580, por eso veras registros raros... :mrgreen:
Espero te sirva
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado cocu3

  • PIC12
  • **
  • Mensajes: 77
Re: existe un conversor de C a asm?
« Respuesta #5 en: 23 de Enero de 2008, 12:23:12 »
ok amigos gracias, y otra cosita, los comentarios no se guardan cierto?

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: existe un conversor de C a asm?
« Respuesta #6 en: 23 de Enero de 2008, 13:00:02 »
ok amigos gracias, y otra cosita, los comentarios no se guardan cierto?

No, claro que no.  El comentario está solo en el código fuente, al ensamblar/compilar no aparecen.

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

  • PIC10
  • *
  • Mensajes: 46
Re: existe un conversor de C a asm?
« Respuesta #7 en: 13 de Mayo de 2012, 18:46:37 »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: existe un conversor de C a asm?
« Respuesta #8 en: 14 de Mayo de 2012, 10:10:22 »
La mayoría de los compiladores te dejan ver el código fuente y el asm generado. En el MPLAB se hace con el menú "View... Dissasembly Listing".

Ejemplo con C18:

Código: C
  1. /****************************************************************************
  2.       MAIN PROGRAM
  3.  ****************************************************************************/
  4. void main(void) {
  5.  
  6.    pwm_init();
  7.  
  8.    TRISA = 0x00;     // Configurar todo el puerto RA como salidas
  9.    for(;;) {         // Repite siempre
  10.       LATA = 0xFF;   // Todas las salidas RA = 1
  11.       LATA = 0x00;   // Todas las salidas RA = 0
  12.    }
  13. }


Dissasembly Listing:
Código: [Seleccionar]
31:                /****************************************************************************
32:                      MAIN PROGRAM
33:                 ****************************************************************************/
34:                void main(void) {
35:                
36:                   pwm_init();
  00DA    DFF5     RCALL 0xc6
37:                
38:                   TRISA = 0x00;     // Configurar todo el puerto RA como salidas
  00DC    6A92     CLRF 0xf92, ACCESS
39:                   for(;;) {         // Repite siempre
  00E2    D7FD     BRA 0xde
40:                      LATA = 0xFF;   // Todas las salidas RA = 1
  00DE    6889     SETF 0xf89, ACCESS
41:                      LATA = 0x00;   // Todas las salidas RA = 0
  00E0    6A89     CLRF 0xf89, ACCESS

Como puedes ver, aparece cada una de las líneas de código C numeradas y con los comentarios incluídos y la traducción a ASM con el código máquina equivalente y las direcciones de memoria.

Saludos.
« Última modificación: 14 de Mayo de 2012, 10:13:53 por Picuino »


 

anything