Migracja z Cortex-M3 do Cortex-M4

 

Tab. 3.

Operacja Opis Instrukcja asemblerowa Liczba cykli
Wartość bezwzględna (Absolute value) z liczby zmiennoprzecinkowej pojedynczej precyzji VABS.F32 1
Dodawanie (Addition) liczb zmiennoprzecinkowych pojedynczej precyzji VADD.F32 1
Porównanie (Compare) liczby zmiennoprzecinkowej pojedynczej precyzji z wartością rejestru lub zerem VCMP.F32 1
liczby zmiennoprzecinkowej pojedynczej precyzji z wartością rejestru lub zerem VCMPE.F32 1
Konwersja formatów
(Convert)
Pomiędzy liczbami: całkowitą, stałoprzecinkową połówkowej precyzji, i zmiennoprzecinkową pojedynczej precyzji VCVT.F32 1
Dzielenie
(Divide)
liczb zmiennoprzecinkowych pojedynczej precyzji VDIV.F32 14
Ładowanie
(Load)
wielu liczb zmiennoprzecin-kowych podwójnej precyzji VLDM.64 1+2*N, gdzie N jest liczbą liczb zmiennoprze-cinkowych podwójnej precyzji
wielu liczb zmiennoprzecinkowych pojedynczej precyzji VLDM.32 1+N, gdzie N jest liczbą liczb zmiennoprze-cinkowych po-jedynczej precyzji.
pojedynczej liczby zmiennoprzecinkowej podwójnej precyzji VLDR.64 3
pojedynczej liczby zmiennoprzecinkowej pojedynczej precyzji VLDR.32 2
Przesunięcie (Move) na początek/koniec połówki liczby zmiennoprzecinkowej podwójnej precyzji do/z rejestru rdzenia VMOV 1
natychmiastowe/liczby zmiennoprzecinkowej pojedynczej precyzji do rejestru liczby zmiennoprzecinkowej pojedynczej precyzji VMOV 1
dwóch liczb zmiennoprzecinkowych pojedynczej precyzji/jednej liczby zmiennoprzecinkowej podwójnej precyzji do/z dwóch rejestrów rdzenia lub jednej liczby zmiennoprzecinkowej pojedynczej precyzji do/z jednego rejestru rdzenia VMOV 2
wartości zmiennoprzecinkowych kontroli/statusu do rejestru rdzenia VMRS 1
wartości rejestru rdzenia do wartości zmiennoprzecinkowych kontroli/statusu VMSR 1
Mnożenie (Multiply) liczb zmiennoprzecinkowych pojedynczej precyzji VMUL.F32 1
następnie sumowanie liczby zmiennoprzecinkowej pojedynczej precyzji VMLA.F32 3
następnie odejmowanie liczby zmiennoprzecinkowej pojedynczej precyzji VMLS.F32 3
następnie sumowanie i następnie negowanie liczby zmiennoprzecinkowej pojedynczej precyzji VNMLA.F32 3
następnie odejmowanie i następnie negowanie liczby zmiennoprzecinkowej pojedynczej precyzji VNMLS.F32 3
Mnożenie z zaokrąglaniem wyniku
(Fused Multiply)
następnie sumowanie liczby zmiennoprzecinkowej pojedynczej precyzji VFMA.F32 3
następnie odejmowanie liczby zmiennoprzecinkowej pojedynczej precyzji VFMS.F32 3
następnie sumowanie i następnie negowanie liczby zmiennoprzecinkowej pojedynczej precyzji VFNMA.F32 3
następnie odejmowanie i następnie negowanie liczby zmiennoprzecinkowej pojedynczej precyzji VFNMS.F32 3
Negacja
(Negate)
liczby zmiennoprzecinkowej pojedynczej precyzji VNEG.F32 1
oraz mnożenie liczby zmiennoprzecinkowej pojedynczej precyzji VNMUL.F32 1
Zdejmowanie
(Pop)
wartości rejestrów liczby zmiennoprzecinkowej podwójnej precyzji ze stosu VPOP.64 1+2*N, gdzie N jest liczbą reje-strów liczby zmiennoprze-cinkowej po-dwójnej precy-zji.
wartości rejestrów liczby zmiennoprzecinkowej pojedynczej precyzji ze stosu VPOP.32 1+N gdzie N jest liczbą rejestrów
Umieszczanie
(Push)
wartości rejestrów liczby zmiennoprzecinkowej po-dwójnej precyzji na stosie VPUSH.64 1+2*N, gdzie N jest liczbą reje-strów liczby zmiennoprze-cinkowej po-dwójnej precy-zji.
wartości rejestrów liczby zmiennoprzecinkowej pojedynczej precyzji na stosie VPUSH.32 1+N, gdzie N jest liczbą rejestrów
Pierwiastkowanie (Square-root) liczby zmiennoprzecinkowej pojedynczej precyzji VSQRT.F32 14
Zapisywanie
(Store)
rejestrów wielu liczb zmiennoprzecinkowych podwójnej precyzji VSTM.64 1+2*N, gdzie N jest liczbą liczb zmiennoprze-cinkowych po-dwójnej precy-zji.
rejestrów wielu liczb zmiennoprzecinkowych pojedynczej precyzji VSTM.32 1+N, gdzie N jest liczbą liczb zmiennoprze-cinkowych po-jedynczej pre-cyzji.
rejestru pojedynczej liczby zmiennoprzecinkowej podwójnej precyzji VSTR.64 3
rejestru pojedynczej liczby zmiennoprzecinkowej pojedynczej precyzji VSTR.32 2
Odejmowanie (Subtract) liczb zmiennoprzecinkowych pojedynczej precyzji VSUB.F32 1

 

O autorze