




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
(完好版)ARM匯編指令英文全稱及功能描繪V2.0(完好版)ARM匯編指令英文全稱及功能描繪V2.0PAGEPAGE15(完好版)ARM匯編指令英文全稱及功能描繪V2.0PAGE
ARM指令英文全稱及功能描繪
V2.0
滿光明12021年4月9日
轉(zhuǎn)載請(qǐng)支持原創(chuàng),保留此頁(yè)信息,否那么將追查責(zé)任序言
我在工作前買了一本對(duì)于ARM指令的書本,當(dāng)時(shí)出于方便記憶理解的考量,整理了
ARM指令,并且參加了英文的全稱。認(rèn)識(shí)了英文的全稱,能夠好的幫助記憶和理解。百度網(wǎng)盤里分享出來(lái)的
ARM指令英文全稱我看了一下都是我當(dāng)年整理的版本,但他們把作者的名字去掉了。幾年過(guò)去了,ARM技術(shù)獲得了巨大的進(jìn)步,ARM以其低功耗、低本錢、高性能的優(yōu)勢(shì)搶占了挪動(dòng)市場(chǎng)。相信在不遠(yuǎn)的將來(lái),ARM會(huì)廣泛運(yùn)轉(zhuǎn)在個(gè)人電腦和效力器上。在可穿著、邊沿計(jì)算等前沿領(lǐng)域ARM擁有無(wú)與倫比的優(yōu)勢(shì)。作為一個(gè)技術(shù)控,工作以來(lái)我向來(lái)從事ARM有關(guān)的開發(fā)工作,計(jì)算機(jī)領(lǐng)域需要學(xué)習(xí)的東西太多,但好多根基知識(shí)都是相通的。我也希望能把自己這么多年的技術(shù)累積取出來(lái)分享給馬上走上硬件開發(fā)、基層驅(qū)動(dòng)開發(fā)的同仁們本篇仍舊以介紹ARM架構(gòu)以及ARM指令為主,在本來(lái)的根基上從頭調(diào)整了指令次序,第一介紹ARM架構(gòu)不一樣版本的差別,從而引出根本指令構(gòu)造,最后詳盡列出全部指令詳表,加強(qiáng)可讀性,易于理解。2一、ARM指令集版本歷史計(jì)算機(jī)達(dá)成必定的操作經(jīng)過(guò)指令來(lái)實(shí)現(xiàn),不一樣的指令方式被稱為計(jì)算機(jī)架構(gòu),目前計(jì)算機(jī)主要有兩大架構(gòu)陣營(yíng),一是CISC〔ComplexInstructionSetComputers
〕復(fù)雜指令集架構(gòu),另一種是
RISC〔ReducedInstructionSetComputers
〕精簡(jiǎn)指令集架構(gòu)。采納
CISC架構(gòu)的代表是
Intel
和AMD的
X86指令集,采納
RISC架構(gòu)的代表是
ARM指令集和
PowerPC指令集。ARM架構(gòu)從出生到今日從V1版本已經(jīng)升級(jí)到了
V8版本,各版本代表的分支型號(hào)以下表所示。架構(gòu)
辦理器家族
歷史ARMv1ARMv2ARMv3
ARM1ARM2、ARM3ARM6、ARM7
最早由Acorn計(jì)算機(jī)企業(yè)設(shè)計(jì),1985年開發(fā)出樣本。1986年開發(fā)出ARM2,32位數(shù)據(jù),26位地點(diǎn)空間。1990年設(shè)計(jì)團(tuán)隊(duì)構(gòu)成新企業(yè)AdvancedRISCMachinesLtd.
〔安某國(guó)際〕3ARMv4StrongARM、ARM7TDMI、ARM9TDMIARMv5ARM7EJ、ARM9E、ARM10E、XScaleARMv6
ARM11、ARMCortex-MARMv7
ARMCortex-A
、ARMCortex-M
、ARMCortex-RCortex-A35
、Cortex-A50
系列[14]
、Cortex-A72
、ARMv8Cortex-A73從圖中能夠看出,Cortex-A9架構(gòu)的CPU采納的是ARMv7的指令集,目前高性能的64位視頻辦理,比方Cortex-A72,采納的是ARMv8指令集。高版本的指令集合向下兼容低版本,在低版本的根基上增添了更多特別用途的指令集,比方浮點(diǎn)運(yùn)算,CPU加快、數(shù)據(jù)安全等特別用途的指令集。4二、ARM指令集每種架構(gòu)的CPU都有一組特別用途的寄存器,用來(lái)寄存從儲(chǔ)存器讀來(lái)數(shù)據(jù)或許指令編碼,在ARM中,有一個(gè)特別的寄存器CPSR〔currentprogramstatusregister〕,用來(lái)寄存目前指令履行的狀態(tài)。比方寄存數(shù)學(xué)運(yùn)算結(jié)果的正負(fù)、借位、溢出等狀況,詳盡信息以下表所示。CPSRF(Flagsfieldmaskbyte)S(Statsfieldmaskbyte)X(Extensionfieldmaskbyte)C(controlfieldmaskbyte)fieldCPSR313029282726252423222120191817161514131211109876543210意義NZCVQDNZ(RAZ)系統(tǒng)擴(kuò)展用IFTM4M3M2M1M05CPSR各位詳盡意義
N目前指令運(yùn)算結(jié)果為負(fù)時(shí),N=1;結(jié)果為非負(fù)時(shí),N=0Z運(yùn)算結(jié)果為0,Z=1;否那么Z=0C上溢出、進(jìn)位C=1;下溢出、借位C=0V加減法V=1表示符號(hào)位溢出II=1時(shí),嚴(yán)禁IRQ中止FF=1時(shí),嚴(yán)禁FIQ中止TT=0,ARM指令;T=1,Thumb指令0b10000User0b10001FIQ0b10010IRQM[4:0]0b10011Supervisor0b10111Abort0b11011Undefined0b11111System對(duì)于32位的CPU架構(gòu),ARM指令由32位機(jī)器碼構(gòu)成,依據(jù)編碼格式,ARM指令固定的格式以下:313029282726252423222120191817161514131211109876543210CondOpcodeSRnRdShift_operand多半ARM指令能夠條件履行,履行的結(jié)果能夠影響CPSR寄存器的Z、N、C或許V等狀態(tài)標(biāo)記位。cond域不一樣的值所代表不一樣的意義。Opcode域代表詳細(xì)的指令,S為指令的后綴,可加可不加,指令后綴帶S表示該指令的結(jié)果會(huì)影響CPSR寄存器。指令的詳盡編碼格式以下。313029282726252423222120191817161514131211109876543210CondOpcodeSRnRdShift_operand6Cond指令履行的條件編碼,詳盡以下所示opcodebit27、26、25〕指令指令操作符編碼〔更高版本的指令集操作碼包括格式S決定指令的操作能否影響CPSR的值Rd目標(biāo)寄存器編碼Rn包括第一個(gè)操作數(shù)的寄存器編碼Shift_oprand表示第二個(gè)操作數(shù)Cond域的編碼對(duì)應(yīng)的意義以下。31302928Cond域描繪0000EQZ=1Equal0001NEZ=0Notequal,orunordered0010CS/HSC=1Carryset/UnsignedhigherorsameGreatthanorequal,orunordered0011CC/LOC=0Carryclear/UnsignedlowerLessthan0100MIN=1NegativeLessthan0101PLN=0PositiveorzeroGreaterthanorequal,orunordered0110VSV=1OverflowUnordered0111VCV=0NooverflowNotunordered71000HIC=1且Z=0UnsignedhigherGreaterthan,orunordered1001LSC=0或Z=1UnsignedlowerorsameLessthanorequal1010GEN=1且V=1或N=0且V=0SignedgreaterthanorequalGreaterthanorequal1011LTN=1且V=0或N=0且V=1SignedlessthanLessthan,orunordered1100GTZ=0或N=VSignedgreaterthanGreatthan1101LEZ=1或N?。絍SignedlessthanorequalLessthanorequal,orunordered1110ALAlways(unconditional)Opcode域的編碼對(duì)應(yīng)的意義以下。24232221Opcode域描繪0000ANDLogicalAND0001EORLogicalExclusiveOR0010SUBSubtract0011RSBReverseSubtract0100ADDAdd0101ADCAddwithCarry0110SBCSubtractwithCarry0111RSCReverseSubtractwithCarry81000TSTTest1001TEQTestEquivalence1010CMPCompare1011CMNCompareNegated1100ORRLogicalOR1101MOVMove1110BICBitClear1111MVNMoveNotARM指令及功能描繪詳表指令格式:
"{}"中的內(nèi)容可選。即,能夠不帶條件只有目的寄存器,或指令{條件}{S}{目的Register},{OP1},{OP2}只有目的寄存器和操作數(shù)1,也能夠同時(shí)包括全部選項(xiàng)?!癝〞決定指令的操作能否影響CPSR中條件標(biāo)記位的值,當(dāng)沒(méi)有S時(shí)指令不更新CPSR中條件標(biāo)記位的值助記符英文全稱比如、功能BBranchBLabel;程序無(wú)條件跳轉(zhuǎn)到標(biāo)號(hào)Label處履行9
跳轉(zhuǎn)指令數(shù)據(jù)辦理
BLBranchwithLinkBLLabel;當(dāng)程序無(wú)條件跳轉(zhuǎn)到標(biāo)號(hào)Label處履行時(shí),同時(shí)將目前的PC值保留到R14中BLXBranchwithLinkandexchangeBLXLabel;從ARM指令集跳轉(zhuǎn)到指令中所指定的目標(biāo)地點(diǎn),并將辦理器的工作狀態(tài)有ARM狀態(tài)切換到Thumb狀態(tài),該指令同時(shí)將PC的目前內(nèi)容保留到寄存器R14中BXBranchandexchangeBXLabel;跳轉(zhuǎn)到指令中所指定的目標(biāo)地點(diǎn),目標(biāo)地點(diǎn)處的指令既能夠是ARM指令,也能夠是Thumb指令MOVMoveMOVR1,R0,LSL#3;將寄存器R0的值左移3位后傳遞到R1MVNMoveNOTMVNR0,#0;將立刻數(shù)0取反傳遞到寄存器R0中,達(dá)成后R0=-1CMPCompareCMPR1,R0;將寄存器R1的值與寄存器R0的值相減,并依據(jù)結(jié)果設(shè)置CPSR的標(biāo)記位CMNComparenegativeCMNR1,R0;將寄存器R1的值與寄存器R0的值相加,并依據(jù)結(jié)果設(shè)置CPSR的標(biāo)記位TSTTestTSTR1,#0xffe;將寄存器R1的值與立刻數(shù)0xffe按位與,并依據(jù)結(jié)果設(shè)置CPSR的標(biāo)記位TEQTestequivalenceTEQR1,R2;將寄存器R1的值與寄存器R2的值按位異或,并依據(jù)結(jié)果設(shè)置CPSR的標(biāo)記位ADDAddADDR0,R2,R3,LSL#1;R0=R2+(R3<<1)ADCAddwithcarryADCSR2,R6,R10;R2=R6+R10+!C,且更新CPSR的進(jìn)位標(biāo)記位SUBSubtractSUBR0,R1,#256;R0=R1–256SBCSubtractwithcarrySUBSR0,R1,R2;R0=R1-R2-!C,并依據(jù)結(jié)果設(shè)置CPSR的進(jìn)位標(biāo)記位乘加指令10PSR接見加載/儲(chǔ)存指令數(shù)據(jù)
RSBReversesubtractRSBR0,R1,R2;R0=R2–R1RSCReversesubtractwithcarryRSCR0,R1,R2;R0=R2–R1-!CANDAndANDR0,R0,#3;該指令保持R0的0、1位,其余位清零。ORRORORRR0,R0,#3;該指令設(shè)置R0的0、1位,其余位保持不變。EORExclusiveOREORR0,R0,#3;該指令反轉(zhuǎn)R0的0、1位,其余位保持不變。BICBitclearBICR0,R0,#0b1011;該指令去除R0中的位0、1、和3,其余的位保持不變。CLZCountleftzero計(jì)算操作數(shù)最高端0的個(gè)數(shù)MULMultiplyMULR0,R1,R2;R0=R1×R2MLAMultiplyandaccumulateMLASR0,R1,R2,R3;R0=R1×R2+R3,同時(shí)設(shè)置CPSR中的有關(guān)條件標(biāo)記位SMULLSignedmultiplylongSMULLR0,R1,R2,R3;R0=〔R2×R3〕的低32位R1=〔R2×R3〕的高32位SMLALSignedmullandaccumulatelSMLALR0,R1,R2,R3;R0=〔R2×R3〕的低32位+R0;R1=〔R2×R3〕的高32位+R1UMULLUnsignedmultiplylongUMULLR0,R1,R2,R3;R0=〔R2×R3〕的低32位;R1=〔R2×R3〕的高32位UMLALUnsignedmul&accumulatelonUMLALR0,R1,R2,R3;R0=〔R2×R3〕的低位+R0;R1=〔R2×R3〕的高32位+R1MRSMovePSRtoregisterMRSR0,CPSR;傳遞CPSR的內(nèi)容到R0MSRMoveregistertoPSRMSRCPSR_c,R0;傳遞R0的內(nèi)容到CPSR,但只是改正CPSR中的控制位域LDRLoadwordLDRR0,[R1,R2]?。粚?chǔ)存器地點(diǎn)為R1+R2的字?jǐn)?shù)據(jù)讀入R0,并將新地點(diǎn)R1+R2寫入R1。LDRBLoadbyteLDRBR0,[R1,#8];將儲(chǔ)存器地點(diǎn)為R1+8的字節(jié)數(shù)據(jù)讀入R0,并將R0的高24位清零LDRHLoadhalfwordLDRHR0,[R1];將儲(chǔ)存器地點(diǎn)為R1的半字?jǐn)?shù)據(jù)讀入寄存器R0,并將R0的高16位清零LDMLoadmultipleLDMFDR13!,{R0,R4-R12,PC};將貨倉(cāng)內(nèi)容恢復(fù)到寄存器〔R0,R4到R12,LR〕STRStoreSTRR0,[R1],#8;將R0中的字?jǐn)?shù)據(jù)寫入R1為地點(diǎn)的儲(chǔ)存器中,并將新地點(diǎn)R1+8寫入R1STRBStorebyteSTRBR0,[R1,#8];將寄存器R0中的字節(jié)數(shù)據(jù)寫入以R1+8為地點(diǎn)的儲(chǔ)存器中STRHStorehalfwordSTRHR0,[R1,#8];將寄存器R0中的半字?jǐn)?shù)據(jù)寫入以R1+8為地點(diǎn)的儲(chǔ)存器中STMStoremultipleSTMFDR13!,{R0,R4-R12,LR};將寄存器列表中的寄存器〔R0,R4到R12,LR〕存入貨倉(cāng)SWPSwapwordSWPR0,R1,[R2];R2所指的字?jǐn)?shù)據(jù)傳遞到R0,同時(shí)R1的數(shù)據(jù)傳遞到R2所指的單元互換移位指令協(xié)辦理器11并行指令前綴批量傳輸?shù)攸c(diǎn)模式
SWPBSwapbyteLSLLogicshiftleftASLArithmeticshiftleftLSRLogicshiftrightASRArithmeticshiftrightRORRotaterightRRXRotaterightextendedCDPDataoperationsLDCLoadSTCStoreMCRMovetocoprocfrARMregMRCMtoARMregfrcoprocessorSQSHUUQUHBlockload/storeIAIncrementafterIBIncrementbeforeDADecrementafter
SWPBR0,R1,[R2];R2所指的字節(jié)數(shù)據(jù)傳遞到R0,R0高24位清零,同時(shí)R1低8位送R2所指單元。MOVR0,R1,LSL#2〔ASL#2〕;將R1中的內(nèi)容左移兩位后傳遞到R0中,低位用0填補(bǔ)MOVR0,R1,LSR#2;將R1中的內(nèi)容右移兩位后傳遞到R0中,左端用零來(lái)填補(bǔ)MOVR0,R1,ASR#2;將R1中的內(nèi)容右移兩位后傳遞到R0中,左端用第31位的值來(lái)填補(bǔ)MOVR0,R1,ROR#2;將R1中的內(nèi)容循環(huán)右移兩位后傳遞到R0中左端用進(jìn)位標(biāo)記位C來(lái)填補(bǔ)Signedarithmeticmodulo28or216,setsCPSRGEbitSignedsaturatingarithmeticSignedarithmetic,halvingresultsUnsignedarithmeticmodulo28or216,setsCPSRGEbitUnsignedsaturatingarithmeticUnsignedarithmetic,halvingresultsStackpop/pushFDFulldescendingEDEmptydescendingFAFullascendingDBDecrementbeforeEAEmptyascending立刻尋址ADDR0,R0,#0x3fR0←R0+0x3f寄存器尋址ADDR0,R1,R2R0←R1+R2ARM間接尋址ADDR0,R1,[R2]R0←R1+[R2]LDRR0,[R1,#4]R0←[R1+4]指令LDRR0,[R1,#4]!R0←[R1+4]、R1←R1+4尋址變址尋址LDRR0,[R1],#4R0←[R1]、R1←R1+4方式LDRR0,[R1,R2]R0←[R1+R2]多寄存器尋址LDMIAR0,{R1,R2,R3,R4}R1←[R0];R2←[R0+4];R3←[R0+8];R4←[R0+12]偽指令及偽操作GBLA/LCLA定義一個(gè)全局/局部的數(shù)字變量,并初始化為012GBLL/LCLL定義一個(gè)全局/局部的邏輯變量,并初始化為F〔假〕符號(hào)/局部的字符串變量,并初始化為空GBLS/LCLS定義一個(gè)全局定義SETA/SETL/SETS給一個(gè)數(shù)學(xué)/邏輯/字符串變量賦值RLIST對(duì)一個(gè)通用寄存器列表定義名稱,接見序次為依據(jù)寄存器的編號(hào)由低到高,與擺列序次沒(méi)關(guān)DCB〔=〕/DCW〔DCWU〕分派一片連續(xù)的字節(jié)/半字儲(chǔ)存單元并用指定的數(shù)據(jù)初始化DCFS〔DCFSU〕/DCFD〔DCFDU〕后綴U表示分派一片連續(xù)的〔單/雙精度的浮點(diǎn)數(shù)〕字儲(chǔ)存單元并用指定的數(shù)據(jù)初始化不要求對(duì)齊DCQ〔DCQU〕/DCD〔DCDU〕用于分派一片以雙字/字為單位的連續(xù)的儲(chǔ)存單元并用指定的數(shù)據(jù)初始化數(shù)據(jù)R9的偏移量DCDO分派字內(nèi)存希望,初始化為標(biāo)號(hào)鑒于靜態(tài)基址寄存器定義DCI和DCD近似,不一樣處在于DCI內(nèi)存中的數(shù)據(jù)被表記為指令SPACE〔%〕DataSpaceSPACE100;分派連續(xù)100字節(jié)的儲(chǔ)存單元并初始化為0MAP〔^〕MAP0x100,R0;定義構(gòu)造化內(nèi)存表首地點(diǎn)的值為0x100+R0控制指令13
IF、ELSE、ENDIFWHILE、WENDMACRO、MENDMEXITAREAALIGNCODEENTRY
FIELD〔#〕IF表達(dá)式指令序列1ELSE指令序列2ENDIFWHILE表達(dá)式指令序列WENDMACRO$號(hào)宏名$參數(shù)1,$參數(shù)2,??指令序列MENDAREA段名屬性1,屬性2,??AREAInit,CODE,ALIEN=3CODE16、CODE32
AFIELD16;定A的度16字IF、ELSE、ENDIF指令能依據(jù)條件的建立與反對(duì)定能否行某個(gè)指令序列。當(dāng)IF后邊的表達(dá)式真,行指令序列1,否行指令序列2。此中,ELSE及指令序列2能夠沒(méi)有,此,當(dāng)IF后邊的表達(dá)式真,行指令序列1,否行后邊的指
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北省云學(xué)聯(lián)盟2024-2025學(xué)年高一下學(xué)期3月月考物理試題(原卷版+解析版)
- 不完全市場(chǎng)下發(fā)展中國(guó)家的農(nóng)村市場(chǎng)講義
- 《登泰山記》讀析
- 2025年黨章黨史國(guó)史國(guó)情知識(shí)競(jìng)賽題庫(kù)及答案(共200題)
- 盆底肌訓(xùn)練與盆底電刺激在產(chǎn)婦產(chǎn)后盆底肌力康復(fù)治療中的應(yīng)用價(jià)值探討
- 《國(guó)際市場(chǎng)營(yíng)銷》課件-第9章 國(guó)際市場(chǎng)促銷策略
- 《電子商務(wù)基礎(chǔ)》課件-話題3 電子商務(wù)運(yùn)用
- 橄欖球俱樂(lè)部簡(jiǎn)裝合同樣本
- 保險(xiǎn)業(yè)務(wù)代理居間協(xié)議
- 電子商務(wù)平臺(tái)訂單管理表
- (一診)2025年蘭州市高三診斷考試政治試卷(含答案)
- 2025國(guó)家電力投資集團(tuán)有限公司應(yīng)屆畢業(yè)生招聘筆試參考題庫(kù)附帶答案詳解
- 2025年個(gè)人所得稅贍養(yǎng)老人費(fèi)用分?jǐn)倕f(xié)議模板
- 2025年內(nèi)蒙古興安盟單招職業(yè)適應(yīng)性測(cè)試題庫(kù)附答案
- 醫(yī)療器械使用安全和風(fēng)險(xiǎn)管理培訓(xùn)課件
- 2025年新疆生產(chǎn)建設(shè)兵團(tuán)興新職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)帶答案
- 2025年江西工業(yè)貿(mào)易職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)帶答案
- 外周靜脈解剖知識(shí)
- 5萬(wàn)噸年鋰電池物理法循環(huán)再生項(xiàng)目可行性研究報(bào)告模板-立項(xiàng)備案
- 2025年江蘇省高職單招《職測(cè)》高頻必練考試題庫(kù)400題(含答案)
- 康復(fù)科患者隨訪管理措施與效果評(píng)估
評(píng)論
0/150
提交評(píng)論