IT TTT en lenguaje ensamblador

0

¿Por qué tenemos cuatro instrucciones en el bloque de TI para el procesador Cortex M4? ¿Está relacionado con el hecho de que tenemos tres canalizaciones para las instrucciones de montaje de ARM?

    
pregunta user185172

3 respuestas

1

Cotización del centro de información de ARM sobre el Cortex M4:

  

IT {x {y {z}}} cond   donde:

     

x Especifica el cambio de condición para la segunda instrucción en el IT   bloque.

     

y Especifica el cambio de condición para la tercera instrucción en el IT   bloque.

     

z Especifica el cambio de condición para la cuarta instrucción en el IT   bloque.

     

cond Especifica la condición para la primera instrucción en el bloque de TI.

     

El cambio de condición para la segunda, tercera y cuarta instrucción en el bloque de TI puede ser:

     

T   Entonces. Aplica la condición cond a la instrucción.

     

E   Más. Aplica la condición inversa de cond a la instrucción.

     

La instrucción de TI condiciona hasta cuatro instrucciones siguientes. Las condiciones pueden ser todas iguales, o algunas de ellas pueden ser la inversa lógica de las otras. Las instrucciones condicionales que siguen a las instrucciones de TI forman el bloque de TI.

     

Las instrucciones en el bloque de TI, incluidas las ramas, deben especificar la condición en la parte {cond} de su sintaxis.

Lea más aquí ... Aquí es donde obtuve la información de.

    
respondido por el KingDuken
0

Por lo general, hay al menos dos instrucciones abreviadas de TI (If-Then), para poder ejecutar estas construcciones C de manera eficiente:

Si no tiene ninguna otra rama (IT: If-Then): if (X) { /* do something */ }

Si con una rama else (ITTE: If-This-Then-Else): if (X) { /* do something */ } else { /* do something else */ } C

No estoy seguro de los otros.

    
respondido por el Morten Jensen
0

Se basa en la longitud de la tubería y la cantidad de bits que estaban disponibles en el código de operación.

La ramificación causa un pequeño problema en la tubería, por lo que es más eficiente omitir algunas instrucciones al hacerlas condicionales. Sin embargo, todas estas instrucciones aún deben ser recuperadas y decodificadas parcialmente, por lo que si el bloqueo condicional es más largo que unas pocas instrucciones (dependiendo de la versión exacta de la arquitectura ARM), una rama es aún más eficiente.

El código ARM típico a menudo tiene construcciones como

   CMP …
   ADDLT …
   LDRLT …
   LDRGE …

que es más corto y más rápido que la variante ramificada

   CMP …
   BGE 1f
   ADD …
   LDR …
   B 2f
1:
   LDR …
2:

Sin embargo, para cinco o más instrucciones, la sucursal es más barata y el ahorro de espacio le brinda rendimientos decrecientes.

El pulgar mueve el campo de condición a una instrucción separada, pero la economía de cuándo es más barato saltarse o bifurcarse sigue siendo aproximadamente la misma. El uso de más bits de código de operación para permitir que se omitan más instrucciones solo proporciona un ahorro mínimo de espacio, mientras que un menor número de instrucciones condicionales obligaría al compilador a generar una rama en el código Thumb, donde habría utilizado condicionales en el código ARM de 32 bits.     

respondido por el Simon Richter

Lea otras preguntas en las etiquetas