Autor Tema: Problema con la optimización en el compilador MPLAB C18 al usar _asm _endasm  (Leído 1553 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado JuanEZWon

  • PIC10
  • *
  • Mensajes: 21
Hola comunidad todopic. el problema que tengo es que cuando utilizo el asm en linea (_asm  _endasm)  el compilador C18 no optimiza el codigo. y me parece muy raro porque en CCS si lo optimiza sin importar cuanto codigo en ASM coloque. por ejemplo:

si compilo esto:

Citar
void Funcion(void)
{
  Par += 2;
  Impar += 2;
}

me genera esto en ASM:

Citar
74:                void Funcion(void)
75:                {
76:                  Par += 2;
  04EA    0E02     MOVLW 0x2
  04EC    0100     MOVLB 0
  04EE    27B2     ADDWF 0xb2, F, BANKED
77:                  Impar += 2;
  04F0    0100     MOVLB 0
  04F2    27B3     ADDWF 0xb3, F, BANKED
78:                }
  04F8    0012     RETURN 0

Osea un código optimizado.

Pero si lo compilo así con código asm poniendo por ejemplo un NOP:

Citar
void Funcion(void)
{
  Par += 2;
  _asm nop _endasm
 Impar += 2;
}

me genera un codigo sin ninguna optimizacion

Citar
74:                void Funcion(void)
75:                {
76:                  Par += 2;
  04EA    0E02     MOVLW 0x2
  04EC    0100     MOVLB 0
  04EE    27B2     ADDWF 0xb2, F, BANKED
77:                  _asm nop _endasm
  04F0    0000     NOP
78:                  Impar += 2;
  04F2    0E02     MOVLW 0x2                   //FAIL. vuelve a cargar 2 en el registro W siendo que ya esta cargado consumiendo un ciclo extra
  04F4    0100     MOVLB 0
  04F6    27B3     ADDWF 0xb3, F, BANKED
79:                }
  04F8    0012     RETURN 0

Ademas otra duda que tengo es que no entiendo porque el compilador tiene que andar colocando esa instruccion de MOVLB 0 siendo que en el CCS no mas la coloca una vez al principio.
bien, perdonen las molestias y espero algo de ayuda. gracias de antemano
« Última modificación: 28 de Diciembre de 2011, 19:17:07 por JuanEZWon »

Desconectado javierdavid2006

  • PIC10
  • *
  • Mensajes: 15
Re: Problema con la optimización en el compilador MPLAB C18 al usar _asm _endasm
« Respuesta #1 en: 21 de Febrero de 2012, 13:10:51 »
Hola a todos, tengo una problema, he instalado mplab c18, pero no se ni como se abre el programa, lo tengo instalado en esta ruta de la computadora, C:\Program Files\MCC18, pero no se creo ningun acceso directo, aunque hay un monton de archivos dentro a los que les di enter y nada.

Ayuda. o es que que tengo que tener instalado MpLab 8.50 y el c18 es una expansion de este.

Muchas gracias a todos quienes respondan.

Javier - Ecuador

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Problema con la optimización en el compilador MPLAB C18 al usar _asm _endasm
« Respuesta #2 en: 21 de Febrero de 2012, 15:00:32 »
el MPLAB es el IDE y el C18 es el compilador. Es decir, el MPLAB es el entorno grafico, y el C18 compila lo que tu le digas que haga por lo cual necesitas ambos.