技术教育社区
www.teccses.org

现代x86汇编语言程序设计(原书第2版)

封面

作者:丹尼尔·卡斯沃姆

页数:482

出版社:机械工业出版社

出版日期:2021

ISBN:9787111686088

电子书格式:pdf/epub/txt

内容简介

  《现代x86汇编语言程序设计(原书第2版)》全面更新至x86-64。主要面向软件开发人员,旨在通过实用的案例帮助读者快速理解x86-64汇编语言程序设计的概念并掌握编程方法。  《现代x86汇编语言程序设计(原书第2版)》中首先介绍x86-64平台,包括Core体系结构、数据类型、寄存器、内存寻址模式和基本指令集等;然后讨论AVX、AVX2和AVX-512,包括寄存器集、指令集和增强功能等,并利用这些指令集编写性能增强函数和算法;最后讨论提高程序性能的编码策略及技巧。此外,书中包含大量可免费下载的源代码,便于读者实践。  在高级语言广泛应用的今天,汇编语言对于程序的关键性能部分依然至关重要。现代x86处理器的SIMD体系结构提供了强大的资源,为大数据时代的计算密集型问题提供了有效的解决方案,可应用在图像处理、音视频编码和数据挖掘等领域。  《现代x86汇编语言程序设计(原书第2版)》由上一版的x86-32全面更新至x86-64,主要面向软件开发人员,旨在通过实用的案例帮助读者快速理解x86-64汇编语言程序设计的概念,使用x86-64汇编语言以及AVX、AVX2和AVX-512指令集编写性能增强函数和算法,并利用不同的绵程策略和技巧实现性能的大化。  《现代x86汇编语言程序设计(原书第2版)》中包含大量可免费下载的源代码,便于读者实践。通过《现代x86汇编语言程序设计(原书第2版)》,你将:  全面了解x86-64平台,包括Core体系结构、数据类型、寄存器、内存寻址模式和基本指令集,利用x86-64指令集编写可被C++等高级语言调用的函数。  深入理解AVX和AVX2,包括寄存器集、数据类型和指令集,以及数据广播、数据收集和数据排列等增强功能,学习针对打包浮点数和打包整数操作数的编程方法。  深入理解AVX-512,包括寄存器集和数据类型,以及条件执行和合并、嵌入式广播操作、指令级舍入等增强功能,学习利用这些功能进行算法优化。

作者简介

丹尼尔·卡斯沃姆(Daniel Kusswurm) 在软件开发和计算机科学领域拥有超过30年的专业经验。在几十年的职业生涯中,他曾为各种医疗设备、科学仪器和图像处理应用编写了大量创新性的代码。在这些项目中,他有很多使用x86汇编语言的成功经验,有些是显著提高计算密集型算法的性能,有些是巧妙解决技术难题。丹尼尔拥有北伊利诺伊大学电子工程技术硕士学位和德保罗大学计算机科学博士学位。 加作者照片

本书特色

全面更新至x86-64,包含大量源代码示例,学会编写性能增强函数和算法,高效解决计算密集型应用问题

目录

出版者的话

译者序

前言

关于作者

关于技术评审专家

第1章 x86-64 Core体系结构 1

11 历史回顾 1

12 数据类型 3

121 基本数据类型 3

122 数值数据类型 3

123 SIMD数据类型 4

124 其他数据类型 5

13 内部体系结构 5

131 通用寄存器 6

132 RFLAGS寄存器 7

133 指令指针 8

134 指令操作数 9

135 内存寻址 10

14 x86-64与x86-32编程的区别 11

141 无效指令 12

142 不推荐的指令 13

15 指令集概述 13

16 本章小结 15

第2章 x86-64 Core程序设计:第1部分 17

21 简单的整数算术运算 17

211 加法和减法 18

212 逻辑运算 20

213 移位运算 22

22 高级整数算术运算 25

221 乘法和除法 25

222 使用混合类型的运算 28

23 内存寻址和条件代码 33

231 内存寻址模式 33

232 条件代码 37

24 本章小结 40

第3章 x86-64 Core程序设计:第2部分 42

31 数组 42

311 一维数组 42

312 二维数组 48

32 结构 56

33 字符串 58

331 字符计数 58

332 字符串拼接 61

333 比较数组 65

334 数组反转 68

34 本章小结 71

第4章 AVX指令集 72

41 AVX概述 72

42 SIMD编程概念 73

43 环绕与饱和算术运算 74

44 AVX执行环境 75

441 寄存器集 75

442 数据类型 76

443 指令语法 76

45 AVX标量浮点数 77

451 浮点数编程概念 78

452 标量浮点寄存器集 80

453 控制状态寄存器 80

454 指令集概述 81

46 AVX打包浮点值 82

47 AVX打包整数 85

48 x86-AVX和x86-SSE之间的区别 87

49 本章小结 88

第5章 AVX程序设计:标量浮点数 90

51 标量浮点算术运算 90

511 单精度浮点数运算 90

512 双精度浮点数运算 93

52 标量浮点值的比较和转换 97

521 浮点值比较 97

522 浮点值转换 106

53 标量浮点数组和矩阵 111

531 浮点数组 111

532 浮点矩阵 114

54 调用约定 118

541 基本堆栈帧 118

542 使用非易失性通用寄存器 122

543 使用非易失性XMM寄存器 126

544 函数序言和函数结语的宏 131

55 本章小结 136

第6章 AVX程序设计:打包浮点数 137

61 打包浮点算术运算 137

62 打包浮点值比较 142

63 打包浮点值转换 146

64 打包浮点数组 150

641 打包浮点平方根 150

642 打包浮点数组的最小值和最大值 154

643 打包浮点最小二乘法 158

65 打包浮点矩阵 163

651 矩阵转置 163

652 矩阵乘法 170

66 本章小结 175

第7章 AVX程序设计:打包整数 176

71 打包整数加法和减法运算 176

72 打包整数移位 181

73 打包整数乘法 184

74 打包整数图像处理 189

741 像素的最小值和最大值 189

742 像素平均强度 196

743 像素转换 200

744 图像直方图 206

745 图像阈值化 213

75 本章小结 223

第8章 AVX2 224

81 AVX2执行环境 224

82 AVX2打包浮点数 224

83 AVX2打包整数 226

84 x86指令集扩展 226

841 半精度浮点数 227

842 乘法加法融合 227

843 通用寄存器指令集扩展 228

85 本章小结 229

第9章 AVX2程序设计:打包浮点数 230

91 打包浮点算术运算 230

92 打包浮点数组 236

921 简单计算 236

922 列均值 241

923 相关系数 246

93 矩阵乘法和转置 252

94 矩阵求逆 258

95 混合和排列指令 269

96 数据收集指令 273

97 本章小结 279

第10章 AVX2程序设计:打包整数 280

101 打包整数基础 280

1011 基本算术运算 280

1012 打包和解包 284

1013 大小提升 289

102 打包整数图像处理 293

1021 像素剪裁 293

1022 RGB像素的最小值和最大值 298

1023 RGB图像到灰度图像的转换 304

103 本章小结 310

第11章 AVX2程序设计:扩展指令集 312

111 FMA程序设计 312

1111 卷积 312

1112 标量FMA 314

1113 打包FMA 322

112 通用寄存器指令 329

1121 不影响标志位的乘法和移位 329

1122 增强型位操作 333

113 半精度浮点转换 336

114 本章小结 339

第12章 AVX-512 340

121 AVX-512概述 340

122 AVX-512执行环境 341

1221 寄存器集 341

1222 数据类型 3

下载地址

立即下载

(解压密码:www.teccses.org)

Article Title:《现代x86汇编语言程序设计(原书第2版)》
Article link:https://www.teccses.org/1276957.html