既可以认为是一个公司的名字.ppt

上传人:sh****n 文档编号:7463029 上传时间:2020-03-21 格式:PPT 页数:60 大小:362.34KB
返回 下载 相关 举报
既可以认为是一个公司的名字.ppt_第1页
第1页 / 共60页
既可以认为是一个公司的名字.ppt_第2页
第2页 / 共60页
既可以认为是一个公司的名字.ppt_第3页
第3页 / 共60页
点击查看更多>>
资源描述
ARMInstructionSet AssemblyLanguageProgramming JianjianSONGSoftwareInstitute NanjingUniversity Content ARMArchitectureIntroductionARMInstructionSetARMAssemblyLanguageProgramming 2 ARMArchitectureIntroduction ARM AdvancedRISCMachines 既可以认为是一个公司的名字 也可以认为是一类微处理器的通称 还可以认为是一种技术的名字 ARM公司是一家设计公司 是IP IntellectualProperty 供应商 靠转让设计许可证由合作伙伴生产各具特色的芯片 ARM的特点 ARM具有RISC体系的一般特点 大量寄存器绝大多数操作都在寄存器中进行 通过Load Store的在内存和寄存器间传递数据 寻址方式简单采用固定长度的指令格式此外 小体积 低功耗 低成本 高性能16位 32位双指令集全球众多合作伙伴 ARM体系结构的扩充 Thumb Tvariant 16位指令集 用以改善指令密度 LongMultiplication Mvariant 增加两条用于长乘法操作的指令 DSP Evariant 用于DSP应用的算术运算指令集 Jazeller Jvariant 允许直接执行Java字节码 什么是指令密度 执行同等操作序列的前提下 单位内存空间所容纳的机器指令数 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 指令执行条件编码S 指令的操作是否影响CPSR的值Rn 包含第一个操作数的寄存器编码Rd 目标寄存器编码Shifter operand 第二个操作数 符号表示 ARMAddressingModes preliminary 寄存器寻址例 ADDR0 R1 R2 R1 R2 R0立即数寻址例 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的地址值或基于寄存器的地址值读取到寄存器中汇编替换成一条指令ADRLADRL cond register exprADRL伪指令比ADR读取更大的地址范围 汇编替换为两条指令LDRLDR cond register expr label expr 将一个32位的常数或地址值读取到寄存器中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 操作系统内核中的底层程序直接与硬件打交道 需要用到的专用指令 CPU中的特殊指令频繁使用代码的时间效率程序的空间效率 如操作系统的引导程序 Referto Linux内核源代码情景分析 浙江大学出版社 1 5节 AT TformatandIntelformat GrammarofARMassemblylanguage 语句程序格式 语句 语句指令伪操作宏语句格式 symbol instruction directive pseudo instruction comment 伪操作 符号定义伪操作数据定义伪操作汇编控制伪操作框架描述伪操作信息报告伪操作其它伪操作 关于变量的伪操作 声明一个全局变量 并初始化GBLA GBLL GBLS声明一个局部变量 并初始化LCLA LCLL LCLS变量赋值SETA SETL SETS Example GBLAobjectsize 声明一个全局的算术变量objectsizeSETA0 xff 给该变量赋值SPACEobjectsize 使用该变量GBLLstatusBstatusBSETL TRUE 关于数据常量的伪操作 EQUnameEQUexpr type 通常在 inc文件中 分配内存单元 SPACE label SPACEbye num分配一块内存单元 并用0初始化DCB label DCBexpr expr 分配一段字节内存单元 并用expr初始化DCD label DCDexpr expr 分配一段字内存单元 分配的内存都是字对齐的 并用expr初始化 MACROandMEND 子程序与宏在子程序比较短 而需要传递的参数比较多的情况下使用宏汇编技术宏定义体MACRO 宏定义的开始MEND 宏定义的结束通常在 mac文件中格式MACRO label macroname para1 para2 codeMEND Example MACRO labelxmac p1 code label loop1 宏定义体的内部标号 codeBGE label loop1 label loop2 宏定义体的内部标号 codeBL p1 参数p1是一个子程序的名称BGT label loop2 codeMEND Example cont d abcxmacsubr1 调用宏展开后的结果 codeabcloop1 内部标号label被abc代替 codeBGEabcloop1 内部标号label被abc代替abcloop2 内部标号label被abc代替 codeBLsubr1 参数p1被实际值subr1代替BGTabcloop2 code 其它伪操作 AREA 定义一个代码段或数据段AREAsectionname attr1 attr2 ENTRY 程序入口点END 源程序结束 其它伪操作 cont d GET INCLUDEINCLUDEfilenameEXPORTEXPORTsymbol WEAK IMPORTIMPORTsymbol WEAK 程序格式 以段为单位组织源文件代码段和数据段AREA伪操作Example Review ComputerarchitectureandARMarchitectureInstructionsetAssemblylanguageprogrammingProgramstructureStatements
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!