ARM designs the cores of microcontrollers which equip most"embedded systems" based on 32-bit processors. CortexM3 is one of these designs, recently developed by ARM withmicrocontroller applications in mind. To conceive a particularlyoptimized piece of software (as is often the case in the world ofembedded systems) it is often necessary to know how to program inan assembly language.
This book explains the basics of programming in an assemblylanguage, while being based on the architecture of Cortex M3 indetail and developing many examples.
It is written for people who have never programmed in an assemblylanguage and is thus didactic and progresses step by step bydefining the concepts necessary to acquiring a good understandingof these techniques.
Auflage
Sprache
Verlagsgruppe
Produkt-Hinweis
Dateigröße
ISBN-13
978-1-118-56334-2 (9781118563342)
Schweitzer Klassifikation
Preface ix
Chapter 1. Overview of Cortex-M3 Architecture 1
1.1. Assembly language versus the assembler 1
1.2. The world of ARM 2
Chapter 2. The Core of Cortex-M3 15
2.1. Modes, privileges and states 15
2.2. Registers 17
Chapter 3. The Proper Use of Assembly Directives 25
3.1. The concept of the directive 25
3.2. Structure of a program 27
3.3. A section of code 29
3.4. The data section 36
3.5. Is that all? 39
Chapter 4. Operands of Instructions 47
4.1. The constant and renaming 48
4.2. Operands for common instructions 49
4.3. Memory access operands: addressing modes 57
Chapter 5. Instruction Set 63
5.1. Reading guide 63
5.2. Arithmetic instructions 66
5.3. Logical and bit manipulation instructions 70
5.4. Internal transfer instructions 75
5.5. Test instructions 76
5.6. Branch instructions 77
5.7. Load/store instructions 80
5.8. "System" instructions and others 85
Chapter 6. Algorithmic and Data Structures 87
6.1. Flowchart versus algorithm 87
6.2. Alternative structures 89
6.3. Iterative structures 98
6.4. Compound conditions 106
6.5. Data structure 111
Chapter 7. Internal Modularity 119
7.1. Detailing the concept of procedure 119
7.2. Procedure arguments 123
7.3. Local data 136
Chapter 8. Managing Exceptions 147
8.1. What happens during Reset? 148
8.2. Possible exceptions 151
8.3. Priority management 161
8.4. Entry and return in exception processing 167
Chapter 9. From Listing to Executable: External Modularity173
9.1. External modularity 175
9.2. The role of the assembler 182
9.3. The role of the linker 188
9.4. The loader and the debugging unit 196
Appendices 199
Appendix A. Instruction Set - Alphabetical List 201
Appendix B. The SysTick Timer 209
Appendix C. Example of a "Bootstrap" File 217
Appendix D. The GNU Assembler 227
Bibliography 239
Index 241