Abecední tabulka instrukcí


Zápis instrukceOperandyFunkce instrukceFlagy
ADC{S}{Rd,} Rn, Op2aritmetický součet s přičtením flagu CN,Z,C,V
ADD{S}{Rd,} Rn, Op2aritmetický součetN,Z,C,V
ADDW{Rd,} Rn, #imm12aritmetický součet-
ADRRd, návěštínačtení adresy relativní k PC-
AND{S}{Rd,} Rn, Op2logický součinN,Z,C
ASR{S}Rd, Rm, Rs
Rd, Rm, #n
arithmetický posun vpravoN,Z,C
Bnávěštípřímý skok-
BFCRd, #lsb, #widthvynulování (#width) bitů od nejnižšího bitu (#lsb) v registru-
BFIRd, Rn, #lsb, #widthnastavení (#width) bitů od nejnižšího bitu (#lsb)-
BIC{S}{Rd,} Rn, Op2vymazání bitu(ů)N,Z,C
BLnávěštípřímý skok s uložením návratové adresy-
BLXRmnepřímý skok s uložením návratové adresy-
BXRmnepřímý skok-
CBNZRn, labelskok pokud není hodnota nulová-
CBZRn, labelskok pokud je hodnota nulová-
CLZRd, Rmpočet nul v registru Rm od nejvyššího bitu[31] uloží do Rd-
CMN, CMNSRn, Op2aritmetické negativní porovnání a ovlivnění příznakůN,Z,C,V
CMP, CMPSRn, Op2aritmetické porovnání a ovlivnění příznakůN,Z,C,V
CPSIDiflagszměna stavu procesoru, zakázání přerušení-
CPSIEiflagszměna stavu procesoru, povolení přerušení-
EOR{S}{Rd,} Rn, Op2logický XORN,Z,C
IT-začátek bloku podmínečně prováděných instrukcí-
LDM, LDMIA, LDMFDRn{!}, reglistnaplní registry z paměti, adresu inkrementuje po každém přístupu do paměti-
LDMDB, LDMEARn{!}, reglistnaplní registry z paměti, adresu dekrementuje před každým přístupem do paměti-
LDRRt, [Rn, #ofset]
Rt, [Rn, Rm {, LSL #n}]
Rt, návěští
načti slovo (32bit) z paměti do registru-
LDRBRt, [Rn, #ofset]
Rt, [Rn, Rm {, LSL #n}]
Rt, návěští
načti bajt (8bit) z paměti do registru-
LDRDRt, Rt2, [Rn, #ofset]načti dvě slova (každé 32bit) z paměti do dvou registrů-
LDRHRt, [Rn, #ofset]
Rt, [Rn, Rm {, LSL #n}]
Rt, návěští
načti půlslovo (16bit) z paměti do registru-
LDRSBRt, [Rn, #ofset]
Rt, [Rn, Rm {, LSL #n}]
Rt, návěští
načti znaménkově bajt (8bit) z paměti do registru-
LDRSHRt, [Rn, #ofset]
Rt, [Rn, Rm {, LSL #n}]
Rt, návěští
načti znaménkově půlslovo (16bit) z paměti do registru-
LSL{S}Rd, Rm, Rs
Rd, Rm, #n
logický posun vlevoN,Z,C
LSR{S}Rd, Rm, Rs
Rd, Rm, #n
logický posun vpravoN,Z,C
MLARd, Rn, Rm, Ranásobení dvou registrů a k výsledku přičte další register, 32-bit výsledek-
MLSRd, Rn, Rm, Ranásobení dvou registrů a od výsledku odečte další register, 32-bit výsledek-
MOV{S}Rd, Op2přesun do registruN,Z,C
MOVTRd, #imm16přesun 16-bit konstanty do horních 16-bitů registru-
MOVWRd, #imm16přesun 16-bit konstanty do registru-
MRSRd, spec_regpřesun ze speciálního do základního registru-
MSRspec_reg, Rmpřesun ze základního do speciálního registruN,Z,C,V,Q
MUL{S}{Rd,} Rn, Rmnásobení dvou registrů, 32-bit výsledekN,Z
MVN{S}Rd, Op2přesun logické inverzní hodnoty do registruN,Z,C
NOP-prázdná operace-
ORN{S}{Rd,} Rn, Op2logické OR NOTN,Z,C
ORR{S}{Rd,} Rn, Op2logické ORN,Z,C
POPreglistnačte registry ze zásobníku [SP]-
PUSHreglistuloží registry do zásobníku [SP]-
RBITRd, Rnpřevrácení posloupnosti bitů ve slově (32bit)-
REVRd, Rnpřevrácení posloupnosti bajtů (8bit) ve slově (32bit)-
REV16Rd, Rnpřevrácení posloupnosti bajtů (8bit) ve dvou půlslovech (16bit)-
REVSHRd, Rnpřevrácení bajtů (8bit) ve spodním půlslově (16bit) a znaménkové rozšíření na slovo (32bit)-
ROR{S}Rd, Rm, Rs
Rd, Rm, #n
rotace bitů dopravaN,Z,C
RRX{S}Rd, Rmrotace bitů doprava o jeden bit přes flag CN,Z,C
RSB{S}{Rd,} Rn, Op2aritmetický reverzní odečetN,Z,C,V
SBC{S}{Rd,} Rn, Op2aritmetický odečet s odečtením inverze flagu CN,Z,C,V
SBFXRd, Rn, #lsb, #widthznaménkově z registru Rn rozšíří bitové pole do registru Rd-
SDIV{Rd,} Rn, Rmznaménkové dělení-
SMLALRdLo, RdHi, Rn, Rmznaménkové násobení (32bit x 32bit + 64bit), 64bit výsledek-
SMULLRdLo, RdHi, Rn, Rmznaménkové násobení (32bit x 32bit), 64bit výsledek-
STM, STMIA, STMFDRn{!}, reglistuloží registry do paměti, adresu inkrementuje po každém přístupu do paměti-
STMDB, STMEARn{!}, reglistuloží registry do paměti, adresu dekrementuje před každým přístupem do paměti-
STRRt, [Rn, #ofset]
Rt, [Rn, Rm {, LSL #n}]
uloží slovo (32bit) z registru do paměti-
STRBRt, [Rn, #ofset]
Rt, [Rn, Rm {, LSL #n}]
uloží bajt (8bit) z registru do paměti-
STRDRt, Rt2, [Rn, #ofset]uloží dva registry jako dvě slova (každé 32bit) do paměti-
STRHRt, [Rn, #ofset]
Rt, [Rn, Rm {, LSL #n}]
uloží půlslovo (16bit) z registru do paměti-
SUB{S}{Rd,} Rn, Op2aritmetický odečetN,Z,C,V
SUBW{Rd,} Rn, #imm12aritmetický odečet-
SXTB{Rd,} Rm {,ROR #n}znaménkové rozšíření bajtu (8bit) na slovo (32bit)-
SXTH{Rd,} Rm {,ROR #n}znaménkové rozšíření půlslova (16bit) na slovo (32bit)-
TBB[Rn, Rm]programový skok podle bajtové (8bit) tabulky skoků-
TBH[Rn, Rm, LSL #1]programový skok podle půlslovové (16bit) tabulky skoků-
TEQRn, Op2test rovnostiN,Z,C
TSTRn, Op2bitový testN,Z,C
UBFXRd, Rn, #lsb, #widthneznaménkově z registru Rn rozšíří bitové pole do registru Rd-
UDIV{Rd,} Rn, Rmneznaménkové dělení-
UMLALRdLo, RdHi, Rn, Rmneznaménkové násobení (32bit x 32bit + 64bit), 64bit výsledek-
UMULLRdLo, RdHi, Rn, Rmneznaménkové násobení (32bit x 32bit), 64bit výsledek-
UXTB{Rd,} Rm {,ROR #n}neznaménkové rozšíření bajtu (8bit) na slovo (32bit)-
UXTH{Rd,} Rm {,ROR #n}neznaménkové rozšíření půlslova (16bit) na slovo (32bit)-


Instrukce, které jsem nikdy nepoužil (bez detailních informací)

Zápis instrukceOperandyFunkce instrukceFlagy
BKPT#immbreakpoint-
CLREX-ukončení vyhrazeného přístupu k paměti
zrušení se provede následující instrukce STREX
-
DMB-bariéra datové paměti-
DSB-bariéra datové synchronizace-
ISB-bariéra instrukční synchronizace-
LDRBTRt, [Rn {, #offset}]varianta instrukce LDRB s neprivilegovaným přístupem-
LDREXRt, [Rn, #ofset]varianta instrukce LDR s vyhrazeným přístupem k paměti-
LDREXBRt, [Rn]varianta instrukce LDRB s vyhrazeným přístupem k paměti-
LDREXHRt, [Rn]varianta instrukce LDRH s vyhrazeným přístupem k paměti-
LDRHTRt, [Rn {, #offset}]varianta instrukce LDRH s neprivilegovaným přístupem-
LDRSBTRt, [Rn {, #offset}]varianta instrukce LDRSB s neprivilegovaným přístupem-
LDRSHTRt, [Rn {, #offset}]varianta instrukce LDRSH s neprivilegovaným přístupem-
LDRTRt, [Rn {, #offset}]varianta instrukce LDR s neprivilegovaným přístupem-
SEV-pošli událost (asi pro víceprocesorové systémy)-
SSATRd, #n, Rm {,shift #s}Signed saturateQ
STRBTRt, [Rn, #ofset]varianta instrukce STRB s neprivilegovaným přístupem-
STREXRd, Rt, [Rn, #ofset]varianta instrukce STR s vyhrazeným přístupem k paměti-
STREXBRd, Rt, [Rn]varianta instrukce STRB s vyhrazeným přístupem k paměti-
STREXHRd, Rt, [Rn]varianta instrukce STRH s vyhrazeným přístupem k paměti-
STRHTRt, [Rn, #ofset]varianta instrukce STRH s neprivilegovaným přístupem-
STRTRt, [Rn, #ofset]varianta instrukce STR s neprivilegovaným přístupem-
SVC#immnávrat z neprivilegovaného režimu-
USATRd, #n, Rm {,shift #s}Unsigned saturateQ
WFE-podmínečný přechod do sleep režimu-
WFI-čekej na přerušení, okamžitý přechod do sleep režimu-



dawe 2011
Texty, příklady a obrázky jsou převzaty z manuálu programování Cortex-M3 firmy STMicroelectronics PM0056 (CD00228163.pdf).



Dárkový poukaz na trenérské kurzy