TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: cocu3 en 21 de Enero de 2008, 16:45:53

Título: existe un conversor de C a asm?
Publicado por: cocu3 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
Título: Re: existe un conversor de C a asm?
Publicado por: J1M en 21 de Enero de 2008, 16:51:10
El winpic800 del compañero Sisco lo hace. Winpic800.com
Título: Re: existe un conversor de C a asm?
Publicado por: Rulo en 21 de Enero de 2008, 17:01:34


   Mira aca http://www.todopic.com.ar/foros/index.php?topic=16982.msg133240#msg133240 (http://www.todopic.com.ar/foros/index.php?topic=16982.msg133240#msg133240)


     Saludos
Título: Re: existe un conversor de C a asm?
Publicado por: maunix 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
Título: Re: existe un conversor de C a asm?
Publicado por: MGLSOFT 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
Título: Re: existe un conversor de C a asm?
Publicado por: cocu3 en 23 de Enero de 2008, 12:23:12
ok amigos gracias, y otra cosita, los comentarios no se guardan cierto?
Título: Re: existe un conversor de C a asm?
Publicado por: maunix 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.

Título: Re: existe un conversor de C a asm?
Publicado por: miguel valdivia en 13 de Mayo de 2012, 18:46:37
Miren este link:
http://xtronic.org/download/picdisasm-converts-a-hex-in-an-asm-file-2/
a mi funcionó
Título: Re: existe un conversor de C a asm?
Publicado por: Picuino 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.