web-dev-qa-db-fra.com

Qu'est-ce que le jeu d'instructions ARM Thumb)?

sous "Le jeu d'instructions Thumb" dans la section 1-34 de "ARM11TechnicalRefManual", il est dit que:

"Le jeu d'instructions Thumb est un sous-ensemble des instructions 32 bits ARM les plus couramment utilisées. Les instructionsumb sont de 16 bits et ont une instruction _ 32 bits ARM correspondante qui a la même effet sur le modèle de processeur. "

quelqu'un peut-il expliquer davantage cette deuxième phrase en particulier et dire comment le processeur l'exécute?

35
Soroush

Le processeur ARM a 2 jeux d'instructions, le jeu traditionnel ARM, où les instructions sont toutes de 32 bits, et le jeu Thumb plus condensé, où la plupart les instructions courantes sont de 16 bits (et certaines de 32 bits). Le jeu d'instructions à exécuter peut être choisi par le développeur, et un seul jeu peut être actif (c.-à-d. une fois que le processeur est passé en mode Thumb, toutes les instructions être décodé en utilisant le pouce au lieu d’ARM).

Bien qu'il s'agisse de jeux d'instructions différents, ils partagent des fonctionnalités similaires et peuvent être représentés à l'aide du même langage d'assemblage. Par exemple, l'instruction

ADDS  R0, R1, R2

peut être compilé en ARM (E0910002/11100000 10010001 00000000 00000010) ou Thumb (1888/00011000 10001000). Bien sûr, ils remplissent la même fonction (ajoutez r1 et r2 et stockez le résultat dans r0 ), même s'ils ont des codages différents. C'est la signification de Les instructions de pouce ont une longueur de 16 bits et ont une instruction correspondante de 32 bits ARM qui a le même effet sur le processeur) modèle.

Chaque * instruction dans l'encodage Thumb a également un encodage correspondant dans ARM, qui est signifié par la phrase "sous-ensemble".


*: Pas strictement vrai, il n'y a pas d'instruction "IT" dans ARM, bien que ARM n'a pas besoin de "IT" de toute façon (il sera ignoré par l'assembleur).

46
kennytm