Zum Hauptinhalt springen Zur Suche springen Zur Hauptnavigation springen

Modern Arm Assembly Language Programming

62,99 €

Sofort verfügbar, Lieferzeit: Sofort lieferbar

Format auswählen

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"

Gain the fundamentals of Armv8-A 32-bit and 64-bit assembly language programming. This book emphasizes Armv8-A assembly language topics that are relevant to modern software development. It is designed to help you quickly understand Armv8-A assembly language programming and the computational resources of Arm’s SIMD platform. It also contains an abundance of source code that is structured to accelerate learning and comprehension of essential Armv8-A assembly language constructs and SIMD programming concepts. After reading this book, you will be able to code performance-optimized functions and algorithms using Armv8- A 32-bit and 64-bit assembly language.

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