Cómo encontrar la macro "posición de uso" en el microchip MPLab

0

Tengo problemas cuando MPLab me muestra un error dentro de una macros (con lenguaje ensamblador). Da el número de línea donde se definen las macros. Eso no es muy útil si las macros funcionan bien, pero los parámetros pasados son incorrectos. ¿Hay alguna manera de rastrear las macros? (por "seguimiento" no me refiero a "seguimiento de depuración en tiempo de ejecución")

P.S. Tenga en cuenta que esto no es una pregunta si las macros deberían o no deberían usarse.

Por ejemplo, tengamos esta macro (definida en un archivo de inclusión macro.inc):

loadWreg   macro x
  movlw x
endm

Luego use en 3 archivos .asm más de 10 veces. Un uso es incorrecto:

  loadWreg 0xFFFF    ; 16 bit value can't be loaded in WREG

Microchip muestra el error en macro.inc en línea con movlw x . ¿Cómo puedo saber dónde pasé un parámetro incorrecto a la macro?

    
pregunta NickSoft

2 respuestas

1

La macro no se "llama" en el tiempo de ejecución. Eso es lo que son las subrutinas. Por lo tanto, el parámetro no se "pasa" en tiempo de ejecución. Se resolvió en el momento de la compilación y los resultados se codificaron en la invocación de la macro. En otras palabras, en el caso general, realmente no se puede ver qué parámetros se pasaron a macro al pasar por el código después del hecho. Si uno de los parámetros se usa como una constante literal, entonces puedes ver qué terminó siendo esa constante.

La forma de avanzar a través de una macro es hacerlo en la ventana de la memoria del programa. Cuando llegue al inicio de una macro en la ventana de origen, active la ventana de memoria del programa en su lugar. A partir de entonces, los pasos individuales serán instrucciones individuales. Es posible que tenga que abrir una ventana separada con la fuente de la macro para ver qué está pasando.

También intente STEP INTO (F7) cuando llegue a una definición de macro. Ocasionalmente, he tenido que mostrarme el código fuente de la macro en la ventana de origen, pero no recuerdo qué hice exactamente para llegar allí. F8 debería pasar y F7 entrar, lo que podría funcionar en macros. ¿Has probado eso?

    
respondido por el Olin Lathrop
0

Habilitar el listado de desmontaje. Entonces podrás rastrear la ejecución de macros.

    
respondido por el Leon Heller

Lea otras preguntas en las etiquetas