2012-05-17 48 views
24

unter „Dem Thumb-Befehlssatz“ im Abschnitt 1-34 von „ARM11TechnicalRefManual“, so dass es:Was ist der ARM Thumb Befehlssatz?

„Der Thumb-Befehlssatz eine Teilmenge der am häufigsten verwendeten 32-Bit-ARM-Anweisungen werden instructions.Thumb 16 Bits lang und eine entsprechende 32-Bit-ARM-Anweisung haben, die den gleichen Effekt auf das Prozessormodell hat. "

kann jemand mehr über diesen besonders zweiten Satz erklären und sagen, wie macht Prozessor es?

Antwort

29

Der ARM-Prozessor verfügt über 2 Befehlssätze, den traditionellen ARM-Satz, bei dem die Anweisungen alle 32 Bit lang sind, und den verdichteten Thumb-Satz, wobei die häufigsten Befehle 16 Bit lang sind (und einige 32 Bit) lange). Welcher Befehlsatz ausgeführt werden soll, kann vom Entwickler ausgewählt werden, und nur ein Satz kann aktiv sein (d. H. Sobald der Prozessor in den Daumenmodus geschaltet wird, werden alle Befehle so decodiert, dass der Thumb anstelle von ARM verwendet wird).

Obwohl sie unterschiedliche Befehlssätze sind, haben sie ähnliche Funktionen und können mit derselben Assemblersprache dargestellt werden. Zum Beispiel kann die Anweisung

ADDS R0, R1, R2 

kann ARM kompiliert werden (E0910002/11100000 10010001 00000000 00000010) oder Thumb (1888/00011000 10001000). Natürlich haben sie die gleiche Funktion (fügen Sie r1 und r2 hinzu und speichern das Ergebnis in r0), auch wenn sie unterschiedliche Kodierungen haben. Dies ist die Bedeutung von Thumb-Anweisungen sind 16 Bit lang und haben einen entsprechenden 32-Bit-ARM-Befehl, der die gleiche Auswirkung auf das Prozessormodell hat.

Jede * Anweisung in der Daumencodierung hat auch eine entsprechende Codierung in ARM, die mit dem "Subset" -Satz gemeint ist.


*: Nicht unbedingt wahr, gibt es nicht "IT" Anweisung in ARM, obwohl ARM nicht braucht "IT" sowieso (es vom Assembler ignoriert wird).

+17

Der ursprüngliche Thumb-Befehlssatz enthielt nur 16-Bit-Befehle. Thumb2 führte gemischte 16/32 Bit Befehle ein. Thumb (1) war nur eine komprimierte Version des ARM-Befehlssatzes. Die CPU würde einen "Dekomprimierer" beim Befehlsabruf aktivieren, so dass die CPU am Ende noch ARM-Anweisungen verarbeitet. Für ARM war dies wahrscheinlich ein schneller, aber eleganter Hack, um Code-Größe und ICache-Utilization mit kleinen Änderungen an den tatsächlichen Kernen zu reduzieren. Thumb2 hat eine Menge neuer Funktionen wie die erwähnte "IT *" - Anweisung und einige 32-Bit-Befehle hinzugefügt. –

+0

Welche wird gegenüber anderen bevorzugt? Müssen wir ARM-Anweisungen für 32-Bit-Prozessoren und Thumb-Anweisungen für 16-Bit-Prozessoren verwenden? – Rajesh

+0

@Rajesh AFAIK gibt es keine "16-Bit-ARM-Prozessoren". Verwenden Sie den Daumen, wenn Sie Arm 7 oder höher zielen. – kennytm