2013-08-08 28 views
5

Instrukcje trybu Thumb są 2 bajtami, a instrukcja trybu ARM ma 4 bajty. zrzut ekranu to dezasemblacja instrukcji trybu kciuka. dlaczego widzę 4-bajtowe instrukcje wymieszane z 2-bajtowymi instrukcjami? Czy ktoś może to wyjaśnić?tryb kciuka dłoni instrukcje 4-bajtowe

z góry dziękuję.

enter image description here

+2

Ponieważ jest to ** thumb-2 **. –

+0

Prawdziwe pytanie brzmi: dlaczego te dwie instrukcje mov są 4-bajtowe, kiedy można je zakodować jako instrukcje 2-bajtowe (thumb1). –

+3

* thumb-1 * nie ma w ogóle 32-bitowych op-kodów. Tylko * thumb-2 * ma 'mov.w', itp. Procesor nie może przełączać trybów pomiędzy instrukcjami (aż do BLX, itp.), Więc ten kod musi być * thumb-2 *. Nawet 'bl' i' blx' są 16-bitowe w * kciuku-1 *. –

Odpowiedz

1

Cortex M Micros można uruchomić tylko w trybie Thumb-2, czyli coś pomiędzy trybami kciuka i ARM. Zestaw instrukcji Thumbs-2 zawiera 16 i 32-bitowe instrukcje, a procesor nie potrzebuje trybów przełączania, aby wykonać obie wskazówki.

0

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471i/CHDFEDDB.html

lub PDF

http://infocenter.arm.com/help/topic/com.arm.doc.dui0471i/DUI0471I_developing_for_arm_processors.pdf

kciuk-2 technologia jest dostępna w ARMv6T2 i późniejszych architektur. Technologia Thumb-2 jest ważnym ulepszeniem zestawu instrukcji Thumb. Dodaje 32-bitowe instrukcje, które można swobodnie wymieszać z 16-bitowymi instrukcjami w programie. Dodatkowe 32-bitowe kodowane instrukcje Thumb umożliwiają Thumbowi objęcie większości funkcjonalności zestawu instrukcji ARM. Dostępność 16-bitowych i 32-bitowych instrukcji umożliwia technologii Thumb-2 połączenie gęstości kodu wcześniejszych wersji Thumb z wydajnością zestawu instrukcji ARM.