¿Cómo calcular ciclos básicos en MSP430?

2

Hola, todos soy bastante nuevo con el MSP430 y he empezado a usarlo para hacer proyectos muy simples y estoy tratando de hacer un seguimiento de cuántos ciclos utilizo dentro de mi programa, y tengo dos preguntas simples que no puedo encuentra la respuesta para.

¿Cuántos ciclos se requieren para ejecutar 'ret' o 'reti' desde mi programa? ¿Cuántos ciclos se requieren para asignar una variable en MSP430 o para llamar a la variable como se ve en mi "mov.w # COUNT, r13" como se ve a continuación? Aquí está la parte del código que estoy usando:

COUNT       .equ    <number>                ; <-- Does this take any cycles?    

callLoop:   call    #myDelay                ; 2 cycles
            sub.w   #1,r12                  ; 1 cycles
              jne   callLoop                ; 2 cycles
            jmp     RESET                   ; 2 cycles

myDelay:    mov.w   #COUNT,r13              ; 1  <-- Is it only one cycle to run the mov.w?

delayloop:  sub.w   #1,r13                  ; 1 cycles
              jne   delayloop               ; 2 cycles
            ret                             ; ???  No idea what this would be.

r12 ya ha sido asignado un valor anteriormente. Déjame saber si necesitas algo más de mí.

    
pregunta Mitch

1 respuesta

2

Según este artículo , ret es en realidad mov.w @sp+,pc , por lo que solo toma los ciclos necesarios para la indirección, post-incremento y asignación al contador del programa.

.equ es una directiva de ensamblador similar a #define en C y no genera instrucciones; mov.w #,r usa una constante sustituida por el ensamblador y, por lo tanto, no incurre en ciclos adicionales.

    
respondido por el Ignacio Vazquez-Abrams

Lea otras preguntas en las etiquetas