批量上传,套装书可能不全,下单前咨询在线客服! 正版书 !!!
¥ 41.87 4.8折 ¥ 88 全新
库存71件
作者[比] 乔·范·霍伊(Jo Van Hoey) 著 贾玉彬 王昱波 译
出版社清华大学出版社
ISBN9787302595465
出版时间2022-01
装帧平装
开本16开
定价88元
货号29363172
上书时间2024-10-20
学习汇编语言可能会令人沮丧,不仅仅是因为它是一种“无情”的语言。 在任何可能的情况下,计算机都会对你“发飙”。你可能只是在不知不觉中引入了一个隐藏的错误,该错误会在以后的程序中或执行时让你发狂。除此之外,学习曲线陡峭,语言晦涩难懂,英特尔官方文档铺天盖地,并且可用的开发工具各有其古怪之处。
在《x64汇编语言:从新手到AVX专家》中,你将从简单的程序开始学习,直到高级矢量扩展(AVX)编程。 到《x64汇编语言:从新手到AVX专家》结尾,你将能编写和阅读汇编代码,将汇编语言与更高级的语言混合在一起使用,并对AVX有初步的了解。《x64汇编语言:从新手到AVX专家》的目的是向你展示如何使用汇编语言指令。《x64汇编语言:从新手到AVX专家》不是关于编程风格或代码性能优化的。 在掌握汇编的基本知识之后,你可以继续学习如何优化代码。《x64汇编语言:从新手到AVX专家》不应该是你学习编程的本书。如果你没有任何编程经验,请将《x64汇编语言:从新手到AVX专家》搁置一段时间,先学习更高级语言(如C)的一些编程基础知识。
可扫描封底二维码下载《x64汇编语言:从新手到AVX专家》的所有源代码。《x64汇编语言:从新手到AVX专家》使用的代码都尽可能地简单,这意味着没有图形用户界面、繁杂的程序或错误检查,因为添加所有这些特性会使我们的注意力偏离学习汇编语言的目的。
理论知识被严格限制在限度:关于二进制数的一点知识、逻辑运算符的简短介绍以及一些有限的线性代数。我们将远离浮点转换。如果你需要转换二进制或十六进制数,请找一个可以为你执行此类操作的网站。不要浪费时间执行手工计算。坚持目标:学习汇编。
汇编代码以完整的程序呈现,这样你就可以在计算机上测试它们、操作它们、更改它们、破坏它们。
还将展示可以使用哪些工具、如何使用它们以及这些工具的潜在问题。拥有正确工具对于克服陡峭学习曲线至关重要。有时会指出可能有用或提供更多详细信息的书籍、白皮书和网站。
我们无意为你提供所有汇编指令的综合课程。 内容太多了,仅用一本书讲述是不可能的(请看英特尔手册的大小)。我们将介绍主要的指令,以便你对汇编语言有所了解。如果通读《x64汇编语言:从新手到AVX专家》,你将获得学习汇编的必要知识,你还可以自行详细研究某些感兴趣的领域。读完《x64汇编语言:从新手到AVX专家》后,你将可以进一步学习英特尔手册,并尝试理解其内容。
《x64汇编语言:从新手到AVX专家》的大部分内容专门针对Linux上的汇编,因为它是学习汇编语言的简单平台。后,我们提供了一些章节以帮助你了解如何在Windows上进行汇编。 你将看到,一旦掌握了Linux汇编,进行Windows汇编会更容易。
有许多可与英特尔处理器一起使用的汇编器,例如FASM、MASM、GAS、NASM和YASM。我们将在《x64汇编语言:从新手到AVX专家》中使用NASM,因为它是多平台的,在Linux、Windows和macOS上都可用,具有较大的用户群。但不必担心,一旦你熟悉一种汇编器,学习另一种汇编“方言”就很容易。
我们已经仔细编写并测试了《x64汇编语言:从新手到AVX专家》使用的代码。但是,如果文本中有错别字或程序中有错误,我们将不承担任何责任。我们将错误归咎于两只猫,它们喜欢在我们打字的时候走过我们的键盘。
我们在《x64汇编语言:从新手到AVX专家》中提出的想法和观点仅代表我们自己,并不代表IBM的立场、战略或观点。
.了解 CPU和内存的工作原理
.理解计算机和作系统如何协同工作
.了解高级语言编译器如何生成机器语言,并使用这些知识编写更高效的代码
. 更好地分析程序中的错误
. 让程序正常工作,这一部分十分有趣
. 调查恶意软件并采取必要的行动加以预防
Jo Van Hoey拥有40年的IT行业从业经验,包括各种职能部门、多家IT公司和各种计算平台。他近从IBM大型机软件客户经理职位上退休。出于对IT安全的兴趣,Jo长期深入研究汇编语言,因为汇编语言知识是保护IT基础设施抵御攻击和恶意软件的重要基础。
第1章 你的个程序 1
1.1 编辑、汇编、链接和运行(或调试) 2
1.2 汇编程序的结构 6
1.2.1 .data段 6
1.2.2 .bss段 7
1.2.3 .txt段 8
1.3 小结 10
第2章 二进制数、十六进制数和寄存器 11
2.1 二进制简短课程 11
2.1.1 整数 12
2.1.2 浮点数 13
2.2 寄存器简短课程 13
2.2.1 通用寄存器 14
2.2.2 指令指针寄存器(rip) 15
2.2.3 标志寄存器(Flag Register) 15
2.2.4 xmm和ymm寄存器 16
2.3 小结 16
第3章 用调试器进行程序分析:
GDB 17
3.1 开始调试 17
3.2 继续进步 22
3.3 其他GDB命令 24
3.4 稍加改进的hello, world程序 25
3.5 小结 27
第4章 你的下一个程序:
Alive and Kicking 29
4.1 alive程序分析 30
4.2 打印 34
4.3 小结 37
第5章 汇编是基于逻辑的 39
5.1 NOT 39
5.2 OR 39
5.3 XOR 40
5.4 AND 41
5.5 小结 42
第6章 数据显示调试器 43
6.1 使用DDD 43
6.2 小结 46
第7章 跳转和循环 47
7.1 安装SimpleASM 47
7.2 使用SASM 47
7.3 小结 54
第8章 内存 55
8.1 探索内存 55
8.2 小结 62
第9章 整数运算 63
9.1 从整数算术开始 63
9.2 分析算术指令 67
9.3 小结 69
第10章 堆栈 71
10.1 理解堆栈 71
10.2 跟踪堆栈 74
10.3 小结 76
第11章 浮点运算 77
11.1 单精度与双精度 77
11.2 浮点数编程 78
11.3 小结 81
第12章 函数 83
12.1 编写一个简单的函数 83
12.2 更多函数 85
12.3 小结 87
第13章 栈对齐和栈帧 89
13.1 栈对齐 89
13.2 有关栈帧的更多信息 91
13.3 小结 92
第14章 外部函数 93
14.1 编译并链接函数 93
14.2 扩展makefile 97
14.3 小结 98
第15章 调用约定 99
15.1 函数参数 100
15.2 栈布局 103
15.3 保留寄存器 106
15.4 小结 107
第16章 位运算 109
16.1 基础 109
16.2 算术 115
16.3 小结 119
第17章 位操作 121
17.1 修改位的其他方法 121
17.2 位标志变量 124
17.3 小结 125
第18章 宏 127
18.1 编写宏 127
18.2 使用objdump 129
18.3 小结 130
第19章 控制台I/O 131
19.1 使用I/O 131
19.2 处理溢出 133
19.3 小结 137
第20章 文件I/O 139
20.1 使用syscall 139
20.2 文件处理 140
20.3 条件汇编 149
20.4 文件操作指令 149
20.5 小结 151
第21章 命令行 153
21.1 访问命令行参数 153
21.2 调试命令行 154
21.3 小结 156
第22章 从C到汇编 157
22.1 编写C源文件 157
22.2 编写汇编代码 159
22.3 小结 164
第23章 内联汇编 165
23.1 基本内联汇编 165
23.2 扩展内联汇编 167
23.3 小结 170
第24章 字符串 171
24.1 移动字符串 171
24.2 比较和扫描字符串 176
24.3 小结 181
第25章 cpuid 183
25.1 使用cpuid 183
25.2 使用test指令 186
25.3 小结 188
第26章 SIMD 189
26.1 标量数据和打包数据 189
26.2 数据对齐与不对齐 191
26.3 小结 192
第27章 小心mxcsr 193
27.1 操作mxcsr的位 194
27.2 分析程序 201
27.3 小结 202
第28章 SSE对齐 203
28.1 未对齐示例 203
28.2 对齐示例 206
28.3 小结 210
第29章 SSE打包整数 211
29.1 适用于整数的SSE指令 211
29.2 分析代码 213
29.3 小结 214
第30章 SSE字符串操作 215
30.1 imm8控制字节 216
30.2 使用imm8控制字节 217
30.2.1 位0和1 217
30.2.2 位2和3 217
30.2.3 位4和5 218
30.2.4 位6 218
30.2.5 位7 219
30.2.6 标志 219
30.3 小结 220
第31章 搜索字符 221
31.1 确定字符串的长度 221
31.2 在字符串中搜索 224
31.3 小结 228
第32章 比较字符串 229
32.1 隐式长度 229
32.2 显式长度 232
32.3 小结 236
第33章 重排 237
33.1 重排初探 237
33.2 重排广播 243
33.3 重排反转 244
33.4 重排旋转 245
33.5 重排字节 245
33.6 小结 246
第34章 SSE字符串掩码 247
34.1 搜索字符 247
34.2 搜索某个范围内的字符 253
34.3 搜索子字符串 258
34.4 小结 262
第35章 AVX 263
35.1 测试是否支持AVX 263
35.2 AVX程序示例 265
35.3 小结 270
第36章 AVX矩阵运算 271
36.1 矩阵代码示例 271
36.2 矩阵打印:printm4x4 281
36.3 矩阵乘法:multi4x4 281
36.4 矩阵求逆:Inverse4x4 284
36.4.1 Cayley-Hamilton定理 284
36.4.2 Leverrier算法 285
36.4.3 代码 286
36.5 小结 289
第37章 矩阵转置 291
37.1 转置代码示例 291
37.2 解包版本 295
37.3 重排版本 299
37.4 小结 301
第38章 性能调优 303
38.1 转置计算性能 303
38.2 迹计算性能 310
38.3 小结 317
第39章 你好,Windows的世界 319
39.1 入门 319
39.2 编写一些代码 321
39.3 调试 323
39.4 syscall 323
39.5 小结 323
第40章 使用Windows API 325
40.1 控制台输出 325
40.2 编译Windows程序 328
40.3 小结 330
第41章 Windows中的函数 331
41.1 使用四个以上的参数 331
41.2 使用浮点数 337
41.3 小结 339
第42章 可变参数函数 341
42.1 Windows中的可变参数函数 341
42.2 混合值 343
42.3 小结 345
第43章 Windows文件 347
43.1 小结 350
后记 351
.了解 CPU和内存的工作原理
.理解计算机和作系统如何协同工作
.了解高级语言编译器如何生成机器语言,并使用这些知识编写更高效的代码
. 更好地分析程序中的错误
. 让程序正常工作,这一部分十分有趣
. 调查恶意软件并采取必要的行动加以预防
Jo Van Hoey拥有40年的IT行业从业经验,包括各种职能部门、多家IT公司和各种计算平台。他近从IBM大型机软件客户经理职位上退休。出于对IT安全的兴趣,Jo长期深入研究汇编语言,因为汇编语言知识是保护IT基础设施抵御攻击和恶意软件的重要基础。
— 没有更多了 —
以下为对购买帮助不大的评价