Modern X86 Assembly Language Programming 原版pdf by Kusswurm

所需积分/C币:32 2018-04-21 21:06:45 8.77MB PDF
收藏 收藏

Since the invention of the personal computer, software developers have used assembly language to create innovative solutions for a wide variety of algorithmic challenges. During the early days of the PC era, it was common practice to code large portions of a program or complete applications using x86 assembly language. Even as the use of high-level languages such as C, C++, and C# became more prevalent, many software developers continued to employ assembly language to code performance-critical sections of their programs. And while compilers have improved remarkably over the years in terms of generating machine code that is both spatially and temporally efficient, situations still exist where it makes sense for software developers to exploit the benefits of assembly language programming. The inclusion of single-instruction multiple-data (SIMD) architectures in modern x86 processors provides another reason for the continued interest in assembly language programming. A SIMD-capable processor includes computational resources that facilitate concurrent calculations using multiple data values, which can significantly improve the performance of applications that must deliver real-time responsiveness. SIMD architectures are also well-suited for computationally-intense problem domains such as image processing, audio and video encoding, computer-aided design, computer graphics, and data mining. Unfortunately, many high-level languages and development tools are unable to fully (or even partially) exploit the SIMD capabilities of a modern x86 processor. Assembly language, on the other hand, enables the software developer to take full advantage of a processor’s entire computational resource suite.
Modern X86 Assembly Language Programming: 32-bit, 64-bit, SSE, and avx Copyright 2014 by Daniel Kusswurm This work is subject to copyright All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse ofillustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software or by similar or brief e erpts in connection with reviews or scholarly analysis or material supplied specifically@r Gre dissimilar methodology now known or hereafter developed. Exempted from this legal reservation the purpose of being entered and executed on a computer system, for exclusive use by the purchaser of the work. Duplication of this publication or parts thereof is permitted only under the provisions of the copyright Law of the Publishers location, in its current version, and permission for use must always be obtained from Springer. Permissions for use may be obtained through RightsLink at the Copyright Clearance Center Violations are liable to prosecution under the respective Copyright Law ISBN-13(pbk):978-1-48420065-0 ISBN-13( electronic:978-1-4842-0064-3 Trademarked names, logos, and images may appear in this book, Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director: Welmoed Spahr Lead Editors: Steve Weiss(Apress); Patrick Ilauke(Intel) Technical reviewer: Paul cohen Editorial Board: Steve Anglin, Gary Cornell, Louise Corrigan, James T DeWolf, Jonathan Gennick, Robert Hutchinson, Michelle Lowman, James Markham, Matthew Moodie Jeff Olson, Jeffrey Pepper, Douglas Pundick, Ben Renow-Clarke, Gwenan Spearing, Matt wade steve weiss Coordinating Editor: Melissa maldonado Copy Editor: Kezia Endsley Compositor: SPi Globa Indexer: SPi Global Artist SPi Global Cover Designer: Anna Ishchenko Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax(201)348-4505, e-mailorders-ny@springer-sbm.comorvisitwww.springeronline.comApressMedia,Llcisa California LlC and the sole member (owner)is Springer Science+Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation Apress and friends of ed books may be purchased in bulk for academic, corporate, or promotional use eBook versions and licenses are also available for most titles. for more information reference Any source code or other supplementary materials referenced by the author in this text is available Contents at a Glance Introduction ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ Chapter 1: X86-32 Core Architecture ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ Chapter2:X86-3200 re Programming…,…27 Chapter 3: X87 Floating-Point Unit mmammaanammmnan 87 Chapter4:X87 FPU Programming………,…,…,…,…103 Chapter 5: MMX Technology maam maIn 133 Chapter 6: MMX Technology Programming nmmmmmmmaaa 147 Chapter 7: Streaming SIMD Extensions mmmmaammmm IIam 179 Chapter 8: X86-SSE programming- Scalar Floating-Point amman 207 Chapter 9: X86-SSE Programming- Packed Floating-Point aar 237 Chapter 10: X86-SSE Programming- Packed Integers 273 Chapter11:X86- SSE Programming一 Text Strings…m…,,303 Chapter 12: Advanced vector Extensions(AvX) 327 Chapter 13: X86-AVX Programming -Scalar Floating-Point anm 351 Chapter 14: X 86-AvX Programming-Packed Floating-point ■■■■■■■■■■■■ 377 Chapter 15: X86-AVX Programming -Packed Integers 405 CONTENTS AT A GLANCE Chapter 16: X86-AWX Programming -New Instructionsmamm 439 Chapter17:X86-64c0 re Architecture,,,,,…,…,…,491 Chapter 18: X86-64 Core Programming mmmmmmnammanmmmmmn 503 Chapter19:X8664 SIMD Architecture,,……,…,,…557 Chapter20:X86-64S| MD Programming,…,…,,…,,.563 Chapter 21: Advanced Topics and optimization Techniques m, 623 Chapter 22: Advanced Topics Programming amamnammmammammmann 637 Index uumm 657 Contents Introduction XXV Chapter 1: X86-32 Core Architecture amma a EREIaIaIam IEn 1 Historical Overview Data Types.. Fundamental Data Types Numerical Data Types…… ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ Packed Data Types .. aneeeee.eeeonem.neen ennnIaE Miscellaneous Data Types............................ Internal Architecture 56789 Segment Registers….…,, ■■■■■■■■■■■■■_画,画□_■ General- Purpose Registers…… ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■n■■■■■■■■nm■日■■■■■■■日■■■■mm■nm EFLAGS Register ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ■■■ Instruction Pointer 13 Instruction Operands 13 Memory Addressing Modes…… 14 Instruction set overview ■■■■■■■■■■■夏口■ 15 Data transfer 18 Binary arithmetic Data Comparison…… ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONTENtS Data conversion 20 Logical 21 Rotate and shift 21 Byte Set and Bit String…,,,,,,… 22 String……….…..….22 Flag Manipulation ■■■■■■■■■■■■■■■■■■■■■■■■■■ 123 Control transfer.…24 Miscellaneous 25 Summary ■■■■■』■』■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ama■nm口■■ 25 Chapter 2: X86-32 Core Programming aaBBIRAIBAAIIBRIEEIREIIALII 27 Getting Started 28 First Assembly Language Function…..,,,,…28 Integer Multiplication and Division 32 X86-32 Programming Fundamentals 36 Calling convention ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ■■■■■■ 37 Memory Addressing Modes ■■日■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■』■■■日目日m日■BB_BB目■日日a■ Integer Addition ................... ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 6 Condition codes 49 Arrays……54 One-Dimensional Arrays 55 TWo-Dimensional Arrays 60 Structures…67 Simple structures 67 Dynamic Structure Creation 70 ■■■■■■■■ Strings n…,73 Counting characters…,… 74 String concatenation 76 CONTENTS Comparing Arrays….,,… 80 Array Reversal 3 Summary ■■■■■』■■■■■■■■■■ 86 Chapter 3: X87 Floating-Point Unit m ■■■■■■■■■■■■■■■■■■ 87 X87 FPU Core Architecture 87 Data registers ■■■■■■■■■■■■■■■■■■a口■■■■■■■■■日■■■■■■ma■_a 88 X87 FPU Special-Purpose Registers 88 X87 FPU Operands and 91 X87 FPU Instruction set, ww 95 Data transfer 95 Basic Arithmetic 96 Data comparison.., Transcendental 100 Constants,…,, n…101 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■日■■■■■■■日■■■■■■■■■日■■■■■ Control m.....m..101 Summary… 102 Chapter 4: X87 FPU Programming amaammama 103 X87 FPU Programming Fundamentals 103 Simple Arithmetic.…, 104 Floating-Point Compares ■■■■■■■■■■■■■■■ 108 X87 FPU Advanced nunn. 112 Floating-Point Arrays 112 Transcendental instructions………120 Advanced Stack Usage ■■■■■■■■■ 124 Summary… 130 IX CONTENTS Chapter5: MMX Techno|ogy…,…,,…m ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 133 SIMD Processing Concepts 133 Wraparound vs. Saturated arithmetic…,,,,.,,,,,…,…,…,…135 MMX Execution environment 137 MMX Instruction Set 138 Data transfer ■■■■■■a■■日■■ 139 Arithmetic…n ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■a■■■■■■■■m■■B■■■__ 139 Conversion.…142 Logical and shift..,,,,,,,,,,,,,,,,…,,……142 Unpack and Shuffle..........143 nsertion and extraction…… 1-4 State and cache control 145 Summary.…,, ,145 Chapter 6: MMX Technology Programming ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 147 MMX Programming Fundamentals.…… 147 Packed Integer Addition . 149 Packed Integer Shifts.............. 156 Packed Integer Multip| lication.…,,,,…, 160 MMX Advanced Programming 日日 164 nteger Array Processing …164 Using MMx and the x 87 FPU 172 Summary 178 Chapter 7: Streaming SIMD Extensions ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 179 X86-SSE Overview ■■■■■■■■■■■■■■■■■』■■■■■■■"■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■am■■ 179 X86-SSE Execution environment 180 X86-SSE Register set. CONTENTS X86- SSE Data Types…,,…,… 181 X86-SSE Control-Status Registe 183 X86-SSE Processing Techniques.atea. 184 X86-SSE Instruction Set Overview 188 Scalar Floating-Point Data Transfer.. 190 Scalar Floating-Point Arithmetic ■■■■ 190 Scalar Floating Point comparison .191 Scalar Floating-Point Conversion ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 191 Packed Floating-Point Data Transfer BB..BBBB..8.B8-888BB.- 192 Packed Floating-Point Arithmetic.. ■■■■■■■ma■■■口mmmm 193 Packed Floating- Point comparison…,.,.,.,…,,………195 Packed Floating-Point Conversion…… ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■日画■■■■■■量■■BaB 195 Packed Floating-Point Shuffle and Unpack 196 Packed Floating-Point Insertion and Extraction 197 Packed Floating-Point blend 197 Packed Floating-Point Logical...m ... ................. 198 Packed Integer Extensions……....,198 Packed Integer data transfer.a..a.aad ■■■■■■■■■■■■■日■■日■■■■■■■■口■■■量■■日■■■■日■■■ 199 Packed Integer Arithmetic 199 Packed Integer comparison nnn......m 200 Packed Integer Conversion ■■■■■■■■■■■■■■■■ 201 Packed Integer Shuffle and Unpack 202 Packed Integer Insertion and Extraction…… 202 Packed Integer Blend 203 Packed Integer Shift… 203 Text String Processing…… 204 Non-Temporal Data Transfer and Cache Control ■■■■■■■■■■■■■■日■日■■日■■■■■■■■■B■am■ 204 Miscellaneous 205 Summary.…, 206

试读 127P Modern X86 Assembly Language Programming 原版pdf by Kusswurm
限时抽奖 低至0.43元/次
身份认证后 购VIP低至7折
Bruce-Xia 真实资料,值得学习
Modern X86 Assembly Language Programming 原版pdf by Kusswurm 32积分/C币 立即下载
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第1页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第2页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第3页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第4页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第5页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第6页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第7页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第8页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第9页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第10页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第11页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第12页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第13页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第14页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第15页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第16页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第17页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第18页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第19页
Modern X86 Assembly Language Programming 原版pdf by Kusswurm第20页

试读结束, 可继续阅读

32积分/C币 立即下载