既可以認(rèn)為是一個公司的名字.ppt
《既可以認(rèn)為是一個公司的名字.ppt》由會員分享,可在線閱讀,更多相關(guān)《既可以認(rèn)為是一個公司的名字.ppt(60頁珍藏版)》請在裝配圖網(wǎng)上搜索。
ARMInstructionSet AssemblyLanguageProgramming JianjianSONGSoftwareInstitute NanjingUniversity Content ARMArchitectureIntroductionARMInstructionSetARMAssemblyLanguageProgramming 2 ARMArchitectureIntroduction ARM AdvancedRISCMachines 既可以認(rèn)為是一個公司的名字 也可以認(rèn)為是一類微處理器的通稱 還可以認(rèn)為是一種技術(shù)的名字 ARM公司是一家設(shè)計公司 是IP IntellectualProperty 供應(yīng)商 靠轉(zhuǎn)讓設(shè)計許可證由合作伙伴生產(chǎn)各具特色的芯片 ARM的特點 ARM具有RISC體系的一般特點 大量寄存器絕大多數(shù)操作都在寄存器中進(jìn)行 通過Load Store的在內(nèi)存和寄存器間傳遞數(shù)據(jù) 尋址方式簡單采用固定長度的指令格式此外 小體積 低功耗 低成本 高性能16位 32位雙指令集全球眾多合作伙伴 ARM體系結(jié)構(gòu)的擴充 Thumb Tvariant 16位指令集 用以改善指令密度 LongMultiplication Mvariant 增加兩條用于長乘法操作的指令 DSP Evariant 用于DSP應(yīng)用的算術(shù)運算指令集 Jazeller Jvariant 允許直接執(zhí)行Java字節(jié)碼 什么是指令密度 執(zhí)行同等操作序列的前提下 單位內(nèi)存空間所容納的機器指令數(shù) ARM處理器系列 ARM7系列ARM9系列ARM9E系列ARM10系列SecureCore系列IntelStrongARMIntelXScale 3 ARMInstructionSet AssemblylanguageARMprogrammingmodelARMmemoryorganizationARMdataoperationsARMflowofcontrol Assemblylanguage Whatisassemblylanguageandwhyassemblylanguage One to onewithinstructions moreorless Basicfeatures Oneinstructionperline Labelsprovidenamesforaddresses usuallyinfirstcolumn Instructionsoftenstartinlatercolumns Columnsruntoendofline ARMassemblylanguageexample label1ADRr4 cLDRr0 r4 acommentADRr4 dLDRr1 r4 SUBr0 r0 r1 comment ARM指令的一般編碼格式 opcode 指令操作符編碼cond 指令執(zhí)行條件編碼S 指令的操作是否影響CPSR的值Rn 包含第一個操作數(shù)的寄存器編碼Rd 目標(biāo)寄存器編碼Shifter operand 第二個操作數(shù) 符號表示 ARMAddressingModes preliminary 寄存器尋址例 ADDR0 R1 R2 R1 R2 R0立即數(shù)尋址例 ADDR3 R3 2 R3 2 R3寄存器間接尋址例 LDRR0 R3 R3 R0寄存器變址例 LDRR0 R1 4 R1 4 R0相對尋址例 Brel PC offset PC Pseudo ops Someassemblerdirectivesdon tcorresponddirectlytoinstructions Definecurrentaddress Reservestorage Constants ARMprogrammingmodel r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 PC CPSR 31 0 ARMstatusbits Everyarithmetic logical orshiftingoperationsetsCPSRbits N negative Z zero C carry V overflow Examples 1 1 0 NZCV 0110 231 1 1 231 NZCV 0101 ARMdatatypes Wordis32bitslong Wordcanbedividedintofour8 bitbytes ARMaddressescanbe32bitslong Addressreferstobyte Address4startsatbyte4 Canbeconfiguredatpower upaseitherlittle orbig endianmode InstructionsOverview DatainstructionsLoad StoreinstructionsMoveInstructionsComparisoninstructionsBranchinstructions ARMdatainstructions Basicformat ADDr0 r1 r2Computesr1 r2 storesinr0 Immediateoperand ADDr0 r1 2Computesr1 2 storesinr0 ARMdatainstructions ADD ADC add w carry SUB SBC subtract w carry RSB RSC reversesubtract w carry MUL MLA multiply andaccumulate AND ORR EORBIC bitclearLSL LSR logicalshiftleft rightASL ASR arithmeticshiftleft rightROR rotaterightRRX rotaterightextendedwithC Dataoperationvarieties Logicalshift fillswithzeroes Arithmeticshift fillswithzeroesorones RRXperforms33 bitrotate includingCbitfromCPSRabovesignbit ARMload storeinstructions LDR LDRH LDRB load half word byte STR STRH STRB store half word byte Addressingmodes registerindirect LDRr0 r1 withsecondregister LDRr0 r1 r2 withconstant LDRr0 r1 4 ARMADRpseudo op Cannotrefertoanaddressdirectlyinaninstruction GeneratevaluebyperformingarithmeticonPC ADRpseudo opgeneratesinstructionrequiredtocalculateaddress ADRr1 FOO 偽指令 ADRADR cond register expr將基于PC的地址值或基于寄存器的地址值讀取到寄存器中匯編替換成一條指令A(yù)DRLADRL cond register exprADRL偽指令比ADR讀取更大的地址范圍 匯編替換為兩條指令LDRLDR cond register expr label expr 將一個32位的常數(shù)或地址值讀取到寄存器中NOP空操作 如MOVR0 R0 ARMmoveinstructions MOV MVN move negated MOVr0 r1 r0 r1 ARMcomparisoninstructions CMP compareCMN negatedcompareTST bit wisetestTEQ bit wisenegatedtestTheseinstructionssetonlytheNZCVbitsofCPSR ARMbranchinstructions B BranchBL BranchandLink Example Cassignments C x a b c Assembler ADRr4 a getaddressforaLDRr0 r4 getvalueofaADRr4 b getaddressforb reusingr4LDRr1 r4 getvalueofbADDr3 r0 r1 computea bADRr4 c getaddressforcLDRr2 r4 getvalueofc Cassignment cont d SUBr3 r3 r2 completecomputationofxADRr4 x getaddressforxSTRr3 r4 storevalueofx Example Cassignment C y a b c Assembler ADRr4 b getaddressforbLDRr0 r4 getvalueofbADRr4 c getaddressforcLDRr1 r4 getvalueofcADDr2 r0 r1 computepartialresultADRr4 a getaddressforaLDRr0 r4 getvalueofa Cassignment cont d MULr2 r2 r0 computefinalvalueforyADRr4 y getaddressforySTRr2 r4 storey Example Cassignment C z a 2 bperformOR Cassignment cont d ADRr4 z getaddressforzSTRr1 r4 storevalueforz Additionaladdressingmodes Base plus offsetaddressing LDRr0 r1 16 Loadsfromlocationr1 16Auto indexingincrementsbaseregister LDRr0 r1 16 Post indexingfetches thendoesoffset LDRr0 r1 16Loadsr0fromr1 thenadds16tor1 ARMflowofcontrol Alloperationscanbeperformedconditionally testingCPSR EQ NE CS CC MI PL VS VC HI LS GE LT GT LEBranchoperation B 100Canbeperformedconditionally Example ifstatement C if a b branchtofalseblock Ifstatement cont d trueblockMOVr0 5 generatevalueforxADRr4 x getaddressforxSTRr0 r4 storexADRr4 c getaddressforcLDRr0 r4 getvalueofcADRr4 d getaddressfordLDRr1 r4 getvalueofdADDr0 r0 r1 computeyADRr4 y getaddressforySTRr0 r4 storeyBafter brancharoundfalseblock Ifstatement cont d falseblockfblockADRr4 c getaddressforcLDRr0 r4 getvalueofcADRr4 d getaddressfordLDRr1 r4 getvaluefordSUBr0 r0 r1 computea bADRr4 x getaddressforxSTRr0 r4 storevalueofxafter Example Conditionalinstructionimplementation trueblockMOVLTr0 5 generatevalueforxADRLTr4 x getaddressforxSTRLTr0 r4 storexADRLTr4 c getaddressforcLDRLTr0 r4 getvalueofcADRLTr4 d getaddressfordLDRLTr1 r4 getvalueofdADDLTr0 r0 r1 computeyADRLTr4 y getaddressforySTRLTr0 r4 storey Example switchstatement C switch test case0 break case1 Assembler ADRr2 test getaddressfortestLDRr0 r2 loadvaluefortestADRr1 switchtab loadaddressforswitchtableLDRr15 r1 r0 LSL 2 indexswitchtableswitchtabDCDcase0DCDcase1 Example FIRfilter C for i 0 f 0 i N i f f c i x i Assembler loopinitiationcodeMOVr0 0 user0forIMOVr8 0 useseparateindexforarraysADRr2 N getaddressforNLDRr1 r2 getvalueofNMOVr2 0 user2forf FIRfilter cont d ADRr3 c loadr3withbaseofcADRr5 x loadr5withbaseofx loopbodyloopLDRr4 r3 r8 getc i LDRr6 r5 r8 getx i MULr4 r4 r6 computec i x i ADDr2 r2 r4 addintorunningsumADDr8 r8 4 addonewordoffsettoarrayindexADDr0 r0 1 add1toiCMPr0 r1 exit BLTloop ifi N continue ARMsubroutinelinkage Branchandlinkinstruction BLfooCopiescurrentPCtor14 Toreturnfromsubroutine MOVr15 r14 Nestedsubroutinecalls Nesting recursionrequirescodingconvention f1LDRr0 r13 loadargintor0fromstack callf2 STRr13 r14 storef1 sreturnadrsSTRr13 r0 storeargtof2onstackBLf2 branchandlinktof2 returnfromf1 SUBr13 4 popf2 sargoffstackLDRr13 r15 restoreregisterandreturn Summary Load storearchitectureMostinstructionsareRISCy operateinsinglecycle Somemulti registeroperationstakelonger Allinstructionscanbeexecutedconditionally 4 ARMAssemblyLanguageProgramming Whyandwhentouse AT TformatandIntelformatGrammarofARMassemblylanguageExamples Whyandwhentouse 操作系統(tǒng)內(nèi)核中的底層程序直接與硬件打交道 需要用到的專用指令 CPU中的特殊指令頻繁使用代碼的時間效率程序的空間效率 如操作系統(tǒng)的引導(dǎo)程序 Referto Linux內(nèi)核源代碼情景分析 浙江大學(xué)出版社 1 5節(jié) AT TformatandIntelformat GrammarofARMassemblylanguage 語句程序格式 語句 語句指令偽操作宏語句格式 symbol instruction directive pseudo instruction comment 偽操作 符號定義偽操作數(shù)據(jù)定義偽操作匯編控制偽操作框架描述偽操作信息報告?zhèn)尾僮髌渌鼈尾僮?關(guān)于變量的偽操作 聲明一個全局變量 并初始化GBLA GBLL GBLS聲明一個局部變量 并初始化LCLA LCLL LCLS變量賦值SETA SETL SETS Example GBLAobjectsize 聲明一個全局的算術(shù)變量objectsizeSETA0 xff 給該變量賦值SPACEobjectsize 使用該變量GBLLstatusBstatusBSETL TRUE 關(guān)于數(shù)據(jù)常量的偽操作 EQUnameEQUexpr type 通常在 inc文件中 分配內(nèi)存單元 SPACE label SPACEbye num分配一塊內(nèi)存單元 并用0初始化DCB label DCBexpr expr 分配一段字節(jié)內(nèi)存單元 并用expr初始化DCD label DCDexpr expr 分配一段字內(nèi)存單元 分配的內(nèi)存都是字對齊的 并用expr初始化 MACROandMEND 子程序與宏在子程序比較短 而需要傳遞的參數(shù)比較多的情況下使用宏匯編技術(shù)宏定義體MACRO 宏定義的開始MEND 宏定義的結(jié)束通常在 mac文件中格式MACRO label macroname para1 para2 codeMEND Example MACRO labelxmac p1 code label loop1 宏定義體的內(nèi)部標(biāo)號 codeBGE label loop1 label loop2 宏定義體的內(nèi)部標(biāo)號 codeBL p1 參數(shù)p1是一個子程序的名稱BGT label loop2 codeMEND Example cont d abcxmacsubr1 調(diào)用宏展開后的結(jié)果 codeabcloop1 內(nèi)部標(biāo)號label被abc代替 codeBGEabcloop1 內(nèi)部標(biāo)號label被abc代替abcloop2 內(nèi)部標(biāo)號label被abc代替 codeBLsubr1 參數(shù)p1被實際值subr1代替BGTabcloop2 code 其它偽操作 AREA 定義一個代碼段或數(shù)據(jù)段AREAsectionname attr1 attr2 ENTRY 程序入口點END 源程序結(jié)束 其它偽操作 cont d GET INCLUDEINCLUDEfilenameEXPORTEXPORTsymbol WEAK IMPORTIMPORTsymbol WEAK 程序格式 以段為單位組織源文件代碼段和數(shù)據(jù)段AREA偽操作Example Review ComputerarchitectureandARMarchitectureInstructionsetAssemblylanguageprogrammingProgramstructureStatements- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 可以 認(rèn)為 一個 公司 名字
鏈接地址:http://italysoccerbets.com/p-7463029.html