2012-05-17 90 views
24

en "El conjunto de instrucciones del pulgar" en la sección 1-34 de "ARM11TechnicalRefManual" se dice que:¿Qué es el conjunto de instrucciones ARM Thumb?

"El conjunto de instrucciones pulgar es un subconjunto de las instrucciones ARM instructions.Thumb utilizados más comúnmente 32 bits son 16 bits de largo, y tienen una instrucción ARM de 32 bits correspondiente que tiene el mismo efecto en el modelo de procesador ".

¿alguien puede explicar más sobre esto especialmente la segunda oración y decir cómo lo realiza el procesador?

Respuesta

29

El procesador ARM tiene 2 juegos de instrucciones, el conjunto ARM tradicional, donde las instrucciones son todas de 32 bits de longitud, y el conjunto de Thumbs más condensado, donde las instrucciones más comunes son de 16 bits (y algunas de 32 bits largo). La instrucción configurada para ejecutarse puede ser elegida por el desarrollador, y solo un conjunto puede estar activo (es decir, una vez que el procesador cambia al modo Pulgar, todas las instrucciones se decodificarán usando el Pulgar en lugar de ARM).

Aunque son conjuntos de instrucciones diferentes, comparten una funcionalidad similar, y se pueden representar utilizando el mismo lenguaje ensamblador. Por ejemplo, la instrucción

ADDS R0, R1, R2 

puede ser compilado para brazo (E0910002/11100000 10010001 00000000 00000010) o el pulgar (1888/00011000 10001000). Por supuesto, realizan la misma función (agregue r1 y r2 y almacene el resultado en r0), incluso si tienen diferentes codificaciones. Este es el significado de Las instrucciones para el pulgar tienen una longitud de 16 bits y tienen una instrucción ARM correspondiente de 32 bits que tiene el mismo efecto en el modelo del procesador.

Cada * instrucción en codificación Thumb también tiene una codificación correspondiente en ARM, que significa la oración "subconjunto".


*: No es estrictamente cierto, no es "él" instrucción en ARM, aunque ARM no necesita "IT" de todos modos (que será ignorado por el ensamblador).

+17

El conjunto de instrucciones Thumb original solo contenía instrucciones de 16 bits. Thumb2 introdujo instrucciones mixtas de 16/32 bits. El pulgar (1) era solo una versión comprimida del conjunto de instrucción ARM. La CPU habilitaría un "descompresor" en la búsqueda de instrucciones para que al final la CPU aún procesara las instrucciones ARM. Para ARM esto probablemente fue un truco rápido pero elegante para reducir el tamaño del código y la utilización de ICache con pocos cambios en los núcleos reales. Thumb2 agregó muchas características nuevas, como la mencionada instrucción "IT *" y algunas instrucciones de 32 bits. –

+0

¿Cuál es el preferido sobre el otro? ¿Tenemos que usar instrucciones ARM para procesadores de 32 bits e instrucciones Thumb para procesadores de 16 bits? – Rajesh

+0

@Rajesh AFAIK no hay "procesadores ARM de 16 bits". Use Thumb si está apuntando a armv7 o superior. – kennytm

Cuestiones relacionadas