¿Qué es el conjunto de instrucciones del Pulgar del BRAZO?


Bajo "El juego de instrucciones para el pulgar "en la sección 1-34 de" ARM11TechnicalRefManual " se dice que:

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

¿Puede alguien explicar más sobre esta segunda oración y decir cómo lo realiza el procesador?

1 answers

El procesador ARM tiene 2 conjuntos de instrucciones, el conjunto ARM tradicional, donde las instrucciones son todas de 32 bits de largo, y el conjunto Thumb más condensado, donde las instrucciones más comunes son de 16 bits de largo (y algunas son de 32 bits de largo). El desarrollador puede elegir qué conjunto de instrucciones ejecutar, y solo un conjunto puede estar activo (es decir, una vez que el procesador se cambie 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 usando el mismo lenguaje ensamblador. Por ejemplo, la instrucción

ADDS  R0, R1, R2

Se puede compilar a ARM (E0910002 / 11100000 10010001 00000000 00000010) o Pulgar (1888 / 00011000 10001000). Por supuesto, realizan la misma función (agregar r1 y r2 y almacenar el resultado a r0), incluso si tienen diferentes codificaciones. Este es el significado de Las instrucciones de pulgar son de 16 bits de largo, y tienen una instrucción ARM correspondiente de 32 bits que tiene la el mismo efecto en el modelo de procesador.

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


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

 36
Author: kennytm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-17 15:22:29