Modern Arm assembly language programming : covers Armv8-A 32-bit, 64-bit, and SIMD
著者
書誌事項
Modern Arm assembly language programming : covers Armv8-A 32-bit, 64-bit, and SIMD
Apress, 2020
- : pbk
大学図書館所蔵 全1件
  青森
  岩手
  宮城
  秋田
  山形
  福島
  茨城
  栃木
  群馬
  埼玉
  千葉
  東京
  神奈川
  新潟
  富山
  石川
  福井
  山梨
  長野
  岐阜
  静岡
  愛知
  三重
  滋賀
  京都
  大阪
  兵庫
  奈良
  和歌山
  鳥取
  島根
  岡山
  広島
  山口
  徳島
  香川
  愛媛
  高知
  福岡
  佐賀
  長崎
  熊本
  大分
  宮崎
  鹿児島
  沖縄
  韓国
  中国
  タイ
  イギリス
  ドイツ
  スイス
  フランス
  ベルギー
  オランダ
  スウェーデン
  ノルウェー
  アメリカ
内容説明・目次
内容説明
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++.
目次
Modern Arm Assembly Language ProgrammingF:\ModArmAsm\Chapters\Outline\ModernArmAsm_Outline (V2).docx Page 1 of 6Daniel KusswurmIntroductionBook overviewTarget audienceContent overviewSource codeTerminology and conventionsAdditional resourcesChapter 1 - Armv8-32 ArchitectureArmv8-32 OverviewData typesFundamental data typesNumerical data typesSIMD data typesInternal architectureGeneral-purpose register fileApplication Program Status Register (APSR)Instruction set overviewInstruction operandsMemory addressing modesChapter 2 - Armv8-32 Core Programming - Part 1Integer arithmeticAddition and subtraction (Ch02_01)Multiplication (Ch02_02)Division (Ch02_03)Integer operationsLoad instructions (Ch02_04)Move instructions (Ch02_05, Ch02_06)Logical operations (Ch02_07)Chapter 3 - Armv8-32 Core Programming - Part 2Basic stack argumentsStack 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 6Daniel KusswurmStack use with local storage (Ch03_03)Stack use with frame pointer (Ch03_04)Using the APSR condition flagsCompare instructions (Ch03_05)Looping (Ch03_06)Chapter 4 - Armv8-32 Core Programming - Part 3Integer 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 ArchitectureFloating-point programming conceptsBinary encodingsNaNsDenormalsFlush to zeroFloating-point registersSingle-precision registersDouble-precision registersFPSCR (floating-point status and control register)Rounding modesExceptionsChapter 6 - Armv8-32 Floating-Point ProgrammingFloating-point arithmeticFP arithmetic example #1 (Ch06_01)FP arithmetic example #2 (Ch06_02)FP arithmetic example #3 (Ch06_03)Floating-point compares and conversionsFP compares (Ch06_04)FP conversions (Ch06_05)Floating-point arrays and matrices Modern Arm Assembly Language ProgrammingF:\ModArmAsm\Chapters\Outline\ModernArmAsm_Outline (V2).docx Page 3 of 6Daniel KusswurmFP arrays (Ch06_06)FP matrices (Ch06_07)Advanced floating-point programmingUsing C++ floating-point library functions (Ch06_08)Chapter 7 - Armv8-32 SIMD ArchitectureArmv8-32 SIMD Architecture OverviewSIMD programming conceptsWraparound and saturated arithmeticSIMD architectureRegister setsData typesSIMD arithmetic operationsPacked integer arithmeticPacked floating-point arithmeticChapter 8 - Armv8-32 SIMD Integer ProgrammingPacked integer arithmeticAddition and subtraction (Ch08_01)Multiplication (Ch08_02)Shift and logical operations (Ch08_03)Packed integer image processingPixel minimum and maximum (Ch08_04)Mean intensity (Ch08_05)Image thresholding (Ch08_06)Chapter 9 - Armv8-32 SIMD Floating-Point ProgrammingPacked floating-point arithmeticAddition, subtraction, multiplication, division (Ch09_01)Compares (Ch09_02)Conversions (Ch09_03)Packed floating-point arraysMinimum and maximum (Ch09_04)Least squares (Ch09_05)Packed floating-point matrices4x4 matrix transposition (Ch09_06)4x4 matrix multiplication (Ch09_07) Modern Arm Assembly Language ProgrammingF:\ModArmAsm\Chapters\Outline\ModernArmAsm_Outline (V2).docx Page 4 of 6Daniel KusswurmChapter 10 - Armv8-64 ArchitectureArmv8-64 OverviewData typesNumerical data typesSIMD data typesInternal architectureGeneral-purpose register fileFloating-point and SIMD registersStatus flags and condition codesInstruction set overviewOperandsMemory addressing modesChapter 11 - Armv8-64 Core Programming - Part 1Integer arithmeticAddition & subtraction (Ch11_01)Multiplication (Ch11_02)Division (Ch11_03)Integer operationsLoad 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 storageStack arguments using mixed data types (Ch12_01)Stack arguments with local storage (Ch12_02)Using condition codesCompare 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 ProgrammingFloating-point arithmeticSingle-precision arithmetic (Ch13_01) Modern Arm Assembly Language ProgrammingF:\ModArmAsm\Chapters\Outline\ModernArmAsm_Outline (V2).docx Page 5 of 6Daniel KusswurmDouble-precision arithmetic example #1 (Ch13_02)Double-precision arithmetic example #2 (Ch13_03)Floating-point compares and conversionsCompare instructions (Ch13_04)Conversion instructions (Ch13_05)Floating-point arrays and matricesArray programming example (Ch13_06)Matrix programming example (Ch13_07)Advanced floating-point programmingUsing C++ floating-point library functions (Ch13_08)Chapter 14 - Armv8-64 SIMD Integer ProgrammingPacked integer arithmeticAddition and subtraction (Ch14_01)Shift operations (Ch14_02)Multiplication (Ch14_03)Packed integer image processingPixel min/max (Ch14_04)Gray-scale pixel clipping (Ch14_05)Image statistics (Ch14_06)Chapter 15 - Armv8-64 SIMD Floating-Point ProgrammingPacked floating-point arithmeticAddition 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 ProgrammingArmv8 microarchitecture overviewOptimization guidelinesSignal processingFMA convolution (Ch16_01) Modern Arm Assembly Language ProgrammingF:\ModArmAsm\Chapters\Outline\ModernArmAsm_Outline (V2).docx Page 6 of 6Daniel KusswurmVector and matrix operationsVector cross products (Ch16_02)Matrix-vector products (Ch16_03)Matrix inversion (Ch16_04)Appendix A - Source Code and Software Development ToolsSource codeHardware platformHost operating systemsSetup and configurationSoftware toolsg++gasmakeBuilding and executing the source code projectsAppendix B - References and Additional ResourcesArmv8 programming referencesAlgorithm referencesSoftware development resourcesAdditional resources
「Nielsen BookData」 より