书籍详情

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

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

作者:[美] 丹尼尔·卡斯沃姆(Daniel Kusswurm) 著,江红,余青松,余靖 译

出版社:机械工业出版社

出版时间:2021-07-01

ISBN:9787111686088

定价:¥129.00

购买这本书可以去
内容简介
  《现代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汇编语言的成功经验,有些是显著提高计算密集型算法的性能,有些是巧妙解决技术难题。丹尼尔拥有北伊利诺伊大学电子工程技术硕士学位和德保罗大学计算机科学博士学位。 加作者照片
目录
出版者的话
译者序
前言
关于作者
关于技术评审专家
第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
猜您喜欢

读书导航