Modern Arm Assembly Language Programming
62,99 €
Sofort verfügbar, Lieferzeit: Sofort lieferbar
Modern Arm Assembly Language Programming, Apress
Covers Armv8-A 32-bit, 64-bit, and SIMD
Von Daniel Kusswurm, im heise Shop in digitaler Fassung erhältlich
Produktinformationen "Modern Arm Assembly Language Programming"
Modern Arm Assembly Language Programming accentuates the coding of Armv8-A 32-bit and 64-bit assembly language functions that are callable from C++. Multiple chapters are also devoted to Armv8-A SIMD assembly language programming. These chapters discuss how to code functions that are used in computationally intense applications such as machine learning, image processing, audio and video encoding, and computer graphics.
The source code examples were developed using the GNU toolchain (g++, gas, and make) and tested on a Raspberry Pi 4 Model B running Raspbian (32-bit) and Ubuntu Server (64-bit). It is important to note that this is a book about Armv8-A assembly language programming and not the Raspberry Pi.
What You Will Learn
* See essential details about the Armv8-A 32-bit and 64-bit architectures including data types, general purpose registers, floating-point and SIMD registers, and addressing modes
Use the Armv8-A 32-bit and 64-bit instruction sets to create performance-enhancing functions that are callable from C++ * Employ Armv8-A assembly language to efficiently manipulate common data types and programming constructs including integers, arrays, matrices, and user-defined structures
* Create assembly language functions that perform scalar floating-point arithmetic using the Armv8-A 32-bit and 64-bit instruction sets
* Harness the Armv8-A SIMD instruction sets to significantly accelerate the performance of computationally intense algorithms in applications such as machine learning, image processing, computer graphics, mathematics, and statistics.
* Apply leading-edge coding strategies and techniques to optimally exploit the Armv8-A 32-bit and 64-bit instruction sets for maximum possible performance
WHO THIS BOOK IS FOR
Software developers who are creating programs for Armv8-A platforms and want to learn how to code performance-enhancing algorithms and functions using the Armv8-A 32-bit and 64-bit instruction sets. Readers should have previous high-level language programming experience and a basic understanding of C++.
Daniel Kusswurm has over 35 years of professional experience as a software developer and computer scientist. During his career, he has developed innovative software for medical devices, scientific instruments, and image processing applications. On many of these projects, he successfully employed assembly language to significantly improve the performance of computationally intense algorithms or solve unique programming challenges. His educational background includes a BS in electrical engineering technology from Northern Illinois University along with an MS and PhD in computer science from DePaul University. Daniel Kusswurm is also the author of Modern X86 Assembly Language Programming (ISBN-13: 978-1484200650) and Modern X86 Assembly Language Programming, Second Edition (ISBN-13: 978-1484240625), both published by Apress.
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 typesSIMD 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 ProgrammingF:\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
ExceptionsChapter 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 architectureRegister 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 – Part2Stack 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 matricesArray 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 resourcesAdditional resources
Artikel-Details
- Anbieter:
- Apress
- Autor:
- Daniel Kusswurm
- Artikelnummer:
- 9781484262672
- Veröffentlicht:
- 07.10.20