Modern Arm Assembly Language Programming F:\ModArmAsm\Chapters\Outline\ModernArmAsm_Outline (V2).docx Page 1 of 6 Daniel Kusswurm Introduction Book overview Target audience Content overview Source code Terminology and conventions Additional resources Chapter 1 - Armv8-32 Architecture Armv8-32 Overview Data types Fundamental data types Numerical data types SIMD data types Internal architecture General-purpose register file Application Program Status Register (APSR) Instruction set overview Instruction operands Memory addressing modes Chapter 2 - Armv8-32 Core Programming - Part 1 Integer arithmetic Addition and subtraction (Ch02_01) Multiplication (Ch02_02) Division (Ch02_03) Integer operations Load instructions (Ch02_04) Move instructions (Ch02_05, Ch02_06) Logical operations (Ch02_07) Chapter 3 - Armv8-32 Core Programming - Part 2 Basic stack arguments Stack arguments (Ch03_01) Stack arguments using mixed data types (Ch03_02) Advanced stack use Modern Arm Assembly Language Programming F:\ModArmAsm\Chapters\Outline\ModernArmAsm_Outline (V2).docx Page 2 of 6 Daniel Kusswurm Stack use with local storage (Ch03_03) Stack use with frame pointer (Ch03_04) Using the APSR condition flags Compare instructions (Ch03_05) Looping (Ch03_06) Chapter 4 - Armv8-32 Core Programming - Part 3 Integer arrays Array arithmetic (Ch04_01) Array arithmetic using mixed-type integers (Ch04_02) Integer matrices Matrix example #1 (Ch04_03) Matrix example #2 (Ch04_04) Advanced programming Advanced array operations (Ch04_05) Structures (Ch04_06) Chapter 5 - Armv8-32 Floating-Point Architecture Floating-point programming concepts Binary encodings NaNs Denormals Flush to zero Floating-point registers Single-precision registers Double-precision registers FPSCR (floating-point status and control register) Rounding modes Exceptions Chapter 6 - Armv8-32 Floating-Point Programming Floating-point arithmetic FP arithmetic example #1 (Ch06_01) FP arithmetic example #2 (Ch06_02) FP arithmetic example #3 (Ch06_03) Floating-point compares and conversions FP compares (Ch06_04) FP conversions (Ch06_05) Floating-point arrays and matrices Modern Arm Assembly Language Programming F:\ModArmAsm\Chapters\Outline\ModernArmAsm_Outline (V2).docx Page 3 of 6 Daniel Kusswurm FP arrays (Ch06_06) FP matrices (Ch06_07) Advanced floating-point programming Using C++ floating-point library functions (Ch06_08) Chapter 7 - Armv8-32 SIMD Architecture Armv8-32 SIMD Architecture Overview SIMD programming concepts Wraparound and saturated arithmetic SIMD architecture Register sets Data types SIMD arithmetic operations Packed integer arithmetic Packed floating-point arithmetic Chapter 8 - Armv8-32 SIMD Integer Programming Packed integer arithmetic Addition and subtraction (Ch08_01) Multiplication (Ch08_02) Shift and logical operations (Ch08_03) Packed integer image processing Pixel minimum and maximum (Ch08_04) Mean intensity (Ch08_05) Image thresholding (Ch08_06) Chapter 9 - Armv8-32 SIMD Floating-Point Programming Packed floating-point arithmetic Addition, subtraction, multiplication, division (Ch09_01) Compares (Ch09_02) Conversions (Ch09_03) Packed floating-point arrays Minimum and maximum (Ch09_04) Least squares (Ch09_05) Packed floating-point matrices 4x4 matrix transposition (Ch09_06) 4x4 matrix multiplication (Ch09_07) Modern Arm Assembly Language Programming F:\ModArmAsm\Chapters\Outline\ModernArmAsm_Outline (V2).docx Page 4 of 6 Daniel Kusswurm Chapter 10 - Armv8-64 Architecture Armv8-64 Overview Data types Numerical data types SIMD data types Internal architecture General-purpose register file Floating-point and SIMD registers Status flags and condition codes Instruction set overview Operands Memory addressing modes Chapter 11 - Armv8-64 Core Programming - Part 1 Integer arithmetic Addition & subtraction (Ch11_01) Multiplication (Ch11_02) Division (Ch11_03) Integer operations Load and store instructions (Ch11_04) Move instructions (Ch11_05) Logical instructions (Ch11_06) Shift instructions (Ch11_07) Chapter 12 - Armv8-64 Core Programming - Part2 Stack arguments and local storage Stack arguments using mixed data types (Ch12_01) Stack arguments with local storage (Ch12_02) Using condition codes Compare instructions (Ch12_03) Looping (Ch12_04) Integer arrays and matrices Array programming example (Ch12_05) Matrix programming example (Ch12_06) Chapter 13 - Armv8-64 Floating-Point Programming Floating-point arithmetic Single-precision arithmetic (Ch13_01) Modern Arm Assembly Language Programming F:\ModArmAsm\Chapters\Outline\ModernArmAsm_Outline (V2).docx Page 5 of 6 Daniel Kusswurm Double-precision arithmetic example #1 (Ch13_02) Double-precision arithmetic example #2 (Ch13_03) Floating-point compares and conversions Compare instructions (Ch13_04) Conversion instructions (Ch13_05) Floating-point arrays and matrices Array programming example (Ch13_06) Matrix programming example (Ch13_07) Advanced floating-point programming Using C++ floating-point library functions (Ch13_08) Chapter 14 - Armv8-64 SIMD Integer Programming Packed integer arithmetic Addition and subtraction (Ch14_01) Shift operations (Ch14_02) Multiplication (Ch14_03) Packed integer image processing Pixel min/max (Ch14_04) Gray-scale pixel clipping (Ch14_05) Image statistics (Ch14_06) Chapter 15 - Armv8-64 SIMD Floating-Point Programming Packed floating-point arithmetic Addition subtraction, multiplication, division (Ch15_01) Compares (Ch15_02) Conversions (Ch15_03) Packed floating-point arrays Correlation coefficient (Ch15_04) Image conversion - RGB to grayscale (Ch15_05) Packed floating-point matrices 4x4 matrix multiplication (Ch15_06) 4x4 matrix-vector multiplication (Ch15_07) Chapter 16 - Armv8-64 Advanced SIMD Programming Armv8 microarchitecture overview Optimization guidelines Signal processing FMA convolution (Ch16_01) Modern Arm Assembly Language Programming F:\ModArmAsm\Chapters\Outline\ModernArmAsm_Outline (V2).docx Page 6 of 6 Daniel Kusswurm Vector and matrix operations Vector cross products (Ch16_02) Matrix-vector products (Ch16_03) Matrix inversion (Ch16_04) Appendix A - Source Code and Software Development Tools Source code Hardware platform Host operating systems Setup and configuration Software tools g++ gas make Building and executing the source code projects Appendix B - References and Additional Resources Armv8 programming references Algorithm references Software development resources Additional resources.
Modern Arm Assembly Language Programming : Covers Armv8-A 32-bit, 64-bit, and SIMD