Logout succeed
Logout succeed. See you again!

Assembly Language Programming: ARM Cortex-M3 PDF
Preview Assembly Language Programming: ARM Cortex-M3
Assembly Language Programming Assembly Language Programming ARM Cortex-M3 Vincent Mahout Firstpublished2012inGreatBritainandtheUnitedStatesbyISTELtdandJohnWiley&Sons,Inc. Apart from any fair dealing for the purposes of research or private study, or criticism or review, as permittedundertheCopyright,DesignsandPatentsAct1988,thispublicationmayonlybereproduced, storedortransmitted,inanyformorbyanymeans,withthepriorpermissioninwritingofthepublishers, or in the case of reprographic reproduction in accordance with the terms and licenses issued by the CLA. Enquiries concerning reproduction outside these terms should be sent to the publishers at the undermentionedaddress: ISTELtd JohnWiley&Sons,Inc. 27-37StGeorge’sRoad 111RiverStreet LondonSW194EU Hoboken,NJ07030 UK USA www.iste.co.uk www.wiley.com ©ISTELtd2012 TherightsofVincentMahouttobeidentifiedastheauthorofthisworkhavebeenassertedbyhimin accordancewiththeCopyright,DesignsandPatentsAct1988. ____________________________________________________________________________________ LibraryofCongressCataloging-in-PublicationData Mahout,Vincent. Assemblylanguageprogramming:ARMCortex-M3/VincentMahout. p.cm. Includesbibliographicalreferencesandindex. ISBN978-1-84821-329-6 1. Embeddedcomputersystems.2. Microprocessors.3. Assemblerlanguage(Computerprogram language) I.Title. TK7895.E42M342012 005.2--dc23 2011049418 BritishLibraryCataloguing-in-PublicationData ACIPrecordforthisbookisavailablefromtheBritishLibrary ISBN:978-1-84821-329-6 PrintedandboundinGreatBritainbyCPIGroup(UK)Ltd.,Croydon,SurreyCR04YY Table of Contents Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix Chapter1.OverviewofCortex-M3Architecture . . . . . . . . . . . . . . . . 1 1.1.Assemblylanguageversustheassembler . . . . . . . . . . . . . . . . . . 1 1.2.TheworldofARM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.1.Cortex-M3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.2.TheCortex-M3coreinSTM32. . . . . . . . . . . . . . . . . . . . . . 7 Chapter2.TheCoreofCortex-M3 . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1.Modes,privilegesandstates. . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2.Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2.1.RegistersR0toR12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2.2.TheR13register,alsoknownasSP. . . . . . . . . . . . . . . . . . . 19 2.2.3.TheR14register,alsoknownasLR. . . . . . . . . . . . . . . . . . . 20 2.2.4.TheR15orPCregister. . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2.5.ThexPSRregister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Chapter3.TheProperUseofAssemblyDirectives . . . . . . . . . . . . . . . 25 3.1.Theconceptofthedirective . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.1.1.Typographicconventionsanduseofsymbols . . . . . . . . . . . . . 26 3.2.Structureofaprogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2.1.TheAREAsections . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.3.Asectionofcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.3.1.Labels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.3.2.Mnemonic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3.3.Operands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3.4.Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.3.5.Procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 vi AssemblyLanguageProgramming 3.4.Thedatasection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.4.1.Simplereservation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.4.2.Reservationwithinitialization . . . . . . . . . . . . . . . . . . . . . . 37 3.4.3.Datainitialization:thedevilisinthedetails . . . . . . . . . . . . . . 39 3.5.Isthatall?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.5.1.Memorymanagementdirectives. . . . . . . . . . . . . . . . . . . . . 40 3.5.2.Projectmanagementdirectives. . . . . . . . . . . . . . . . . . . . . . 41 3.5.3.Variousandvarieddirectives. . . . . . . . . . . . . . . . . . . . . . . 44 Chapter4.OperandsofInstructions . . . . . . . . . . . . . . . . . . . . . . . . 47 4.1.Theconstantandrenaming. . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.2.Operandsforcommoninstructions. . . . . . . . . . . . . . . . . . . . . . 49 4.2.1.Useofregisters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.2.2.Theimmediateoperand . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.3.Memoryaccessoperands:addressingmodes . . . . . . . . . . . . . . . . 57 4.3.1.Thepointerconcept . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.3.2.Addressingmodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Chapter5.InstructionSet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.1.Readingguide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.1.1.Listofpossible“condition”suffixes. . . . . . . . . . . . . . . . . . . 65 5.2.Arithmeticinstructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.3.Logicalandbitmanipulationinstructions. . . . . . . . . . . . . . . . . . 70 5.4.Internaltransferinstructions. . . . . . . . . . . . . . . . . . . . . . . . . . 75 5.5.Testinstructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.6.Branchinstructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5.7.Load/storeinstructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 5.7.1.Simpletransfers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 5.7.2.Multipletransfers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5.7.3.Accesstothesystemstack . . . . . . . . . . . . . . . . . . . . . . . . 84 5.8.“System”instructionsandothers . . . . . . . . . . . . . . . . . . . . . . . 85 Chapter6.AlgorithmicandDataStructures . . . . . . . . . . . . . . . . . . . 87 6.1.Flowchartversusalgorithm . . . . . . . . . . . . . . . . . . . . . . . . . . 87 6.2.Alternativestructures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 6.2.1.Simple(orshortened)alternative. . . . . . . . . . . . . . . . . . . . . 89 6.2.2.Completealternative. . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 6.2.3.Specialcaseofthealternative . . . . . . . . . . . . . . . . . . . . . . 93 6.2.4.Multiplechoice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 6.3.Iterativestructures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 6.3.1.TheRepeat…Untilloop . . . . . . . . . . . . . . . . . . . . . . . . . . 98 TableofContents vii 6.3.2.TheWhile…Doloop . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 6.3.3.TheFor…loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 6.4.Compoundconditions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 6.4.1.AlternativewithAND . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 6.4.2.IterationwithAND. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 6.4.3.AlternativewithOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 6.4.4.IterationwithOR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 6.5.Datastructure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 6.5.1.Tableinonedimension . . . . . . . . . . . . . . . . . . . . . . . . . . 111 6.5.2.Tablesinmultipledimensions . . . . . . . . . . . . . . . . . . . . . . 112 6.5.3.Registration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 6.5.4.Non-dimensionaltable,characterstring. . . . . . . . . . . . . . . . . 113 6.5.5.Queue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 6.5.6.Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Chapter7.InternalModularity . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 7.1.Detailingtheconceptofprocedure. . . . . . . . . . . . . . . . . . . . . . 119 7.1.1.Simplecall. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 7.1.2.Nestedcalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 7.1.3.“Redwire”example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 7.2.Procedurearguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 7.2.1.Usefulnessofarguments. . . . . . . . . . . . . . . . . . . . . . . . . . 123 7.2.2.Argumentsbyvalueandbyreference. . . . . . . . . . . . . . . . . . 123 7.2.3.Passingargumentsbygeneralregisters. . . . . . . . . . . . . . . . . 123 7.2.4.Passingargumentsbyastack. . . . . . . . . . . . . . . . . . . . . . . 126 7.2.5.Passingargumentsbythesystemstack. . . . . . . . . . . . . . . . . 133 7.2.6.Ontheartofmixing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 7.3.Localdata. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 7.3.1.Simplereservationoflocaldata . . . . . . . . . . . . . . . . . . . . . 137 7.3.2.Usingachainedlist. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Chapter8.ManagingExceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . 147 8.1.WhathappensduringReset?. . . . . . . . . . . . . . . . . . . . . . . . . . 148 8.2.Possibleexceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 8.2.1.Traps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 8.2.2.Interrupts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 8.3.Prioritymanagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 8.3.1.Prioritylevelsandsublevels . . . . . . . . . . . . . . . . . . . . . . . 162 8.3.2.Thenestedmechanism. . . . . . . . . . . . . . . . . . . . . . . . . . . 166 8.4.Entryandreturninexceptionprocessing . . . . . . . . . . . . . . . . . . 167 8.4.1.Re-routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 8.4.2.Return. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 viii AssemblyLanguageProgramming 8.4.3.“Tail-chaining”and“Late-arriving”. . . . . . . . . . . . . . . . . . . 169 8.4.4.OtherusefulregistersfortheNVIC . . . . . . . . . . . . . . . . . . . 170 Chapter9.FromListingtoExecutable: ExternalModularity. . . . . . . . 173 9.1.Externalmodularity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 9.1.1.Genericexample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 9.1.2.Assemblybypieces . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 9.1.3.Advantagesofassemblybypieces. . . . . . . . . . . . . . . . . . . . 178 9.1.4.Externalsymbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 9.1.5.IMPORTandEXPORTdirectives . . . . . . . . . . . . . . . . . . . . 181 9.2.Theroleoftheassembler. . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 9.2.1.Filesproducedbytheassembler . . . . . . . . . . . . . . . . . . . . . 183 9.2.2.Placementcounters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 9.2.3.Firstpass:symboltable . . . . . . . . . . . . . . . . . . . . . . . . . . 185 9.2.4.Secondpass:translation. . . . . . . . . . . . . . . . . . . . . . . . . . 186 9.2.5.Relocationtable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 9.3.Theroleofthelinker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 9.3.1.Functioningprinciple . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 9.3.2.Theproductsofthelinker. . . . . . . . . . . . . . . . . . . . . . . . . 190 9.4.Theloaderandthedebuggingunit . . . . . . . . . . . . . . . . . . . . . . 196 Appendices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 AppendixA.InstructionSet–AlphabeticalList. . . . . . . . . . . . . . . . . 201 AppendixB.TheSysTickTimer . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 AppendixC.Exampleofa“Bootstrap”File. . . . . . . . . . . . . . . . . . . . 217 AppendixD.TheGNUAssembler. . . . . . . . . . . . . . . . . . . . . . . . . . 227 Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241