x86/x64体系探索及编程

x86/x64体系探索及编程 pdf epub mobi txt 电子书 下载 2026

出版者:电子工业出版社
作者:邓志
出品人:
页数:813
译者:
出版时间:2012-10-1
价格:119.00元
装帧:平装
isbn号码:9787121181764
丛书系列:
图书标签:
  • 体系结构
  • 计算机体系结构
  • 计算机
  • 编程
  • CPU
  • x86
  • 计算机科学
  • cpu
  • x86
  • x64
  • 体系结构
  • 编程
  • 汇编
  • 指令集
  • 计算机组成
  • 低级编程
  • 处理器
  • 架构
想要找书就要到 图书目录大全
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

本书是对Intel手册所述处理器架构的探索和论证。全书共五大部分,从多个方面对处理器架构相关的知识进行了梳理介绍。书中每个章节都有相应的测试实验,所运行的实验例子都可以在真实的机器上执行。

通过阅读本书,读者应能培养自己动手实验的能力。如果再有一些OS方面的相关知识,基本上就可以写出自己简易的OS核心。

本书适合有一定的x86基础知识,且对了解处理器架构及编程感兴趣的读者阅读。

《深入理解计算机系统:原理、实践与优化》 这是一本带您穿越计算机底层,探寻指令执行的奥秘,理解软硬件交互精髓的深度技术指南。 您是否曾对程序运行时发生的种种现象感到好奇?为何代码的写法会直接影响性能?操作系统是如何管理内存和进程的?编译器又将我们编写的“高级语言”转化为机器能够理解的“低级语言”?《深入理解计算机系统:原理、实践与优化》将一一为您解答这些疑问,为您构建坚实而全面的计算机系统知识体系。 核心内容概览: 数字的表示与运算: 从最基础的位(bit)和字节(byte)出发,深入探讨整数和浮点数的二进制表示方式,理解溢出、精度丢失等问题的根源。您将掌握数值在计算机内部的真实形态,为后续理解更复杂的概念奠定基石。 指令集架构(ISA)与汇编语言: 本书将揭示处理器执行指令的本质。通过剖析典型的指令集架构(而非局限于某一特定架构),您将了解CPU如何解码、执行指令,以及寄存器的作用。通过学习汇编语言,您将能直接窥探程序的底层运作,理解编译器是如何将高级语言翻译成机器码的。这不仅是理解计算机工作原理的关键,更是优化程序性能的重要手段。 存储器层次结构与内存管理: 计算机系统中,存储器并非单一概念。您将深入理解从高速缓存(Cache)、主存(RAM)到辅助存储(如硬盘)的完整存储器层次结构,以及它们之间的交互机制。本书将详细讲解内存的分配、访问、回收等过程,帮助您理解内存泄漏、缓存未命中等常见问题,并学会如何进行有效的内存管理。 链接与加载: 当您编写的程序由多个源文件组成,或者依赖于外部库时,链接器(Linker)和加载器(Loader)便扮演着至关重要的角色。本书将详细阐述静态链接和动态链接的过程,揭示符号解析、重定位等核心概念。您将理解程序是如何从磁盘被加载到内存并最终被执行的。 进程与线程: 操作系统如何同时运行多个程序?进程和线程又是如何协同工作的?本书将深入探讨进程的创建、状态转换、IPC(进程间通信)机制,以及线程模型的优势与挑战。您将理解并发和并行编程的基本原理,为开发高效的多任务应用程序打下基础。 虚拟内存: 现代操作系统普遍采用虚拟内存技术,它带来了内存隔离、进程独立以及更有效地利用物理内存等诸多好处。本书将详细讲解虚拟内存的实现原理,包括页表、地址翻译、缺页中断等关键概念,让您深刻理解程序如何在独立的地址空间中运行,而无需关心物理内存的真实布局。 I/O与网络编程: 数据是如何从磁盘读取,或者通过网络传输的?本书将介绍操作系统提供的I/O接口,以及同步和异步I/O模型。同时,您将学习到网络通信的基本原理,包括TCP/IP协议栈,以及如何在应用程序层面实现网络功能,构建网络应用。 性能分析与优化: 理解底层原理的最终目的之一是提高程序的性能。《深入理解计算机系统:原理、实践与优化》将引导您掌握各种性能分析工具,并结合前面所学的知识,针对性地进行代码优化。您将学习如何识别性能瓶颈,并运用各种技术(如算法优化、数据结构选择、并发控制、缓存优化等)来提升程序的执行效率。 本书的特色: 系统性与深度并存: 本书并非零散的技术点堆砌,而是从最基本的计算机原理出发,层层递进,构建起一个完整而深刻的计算机系统图景。 理论与实践紧密结合: 书中不仅包含丰富的理论知识,还配有大量的代码示例和练习题,帮助读者将所学知识应用于实践,真正掌握核心技术。 跨平台通用性: 虽然会以典型的系统架构为例进行讲解,但本书的原理和思想是具有普遍性的,能够帮助读者理解不同平台下的计算机系统运作。 面向广泛的技术人群: 无论您是初学者,希望建立扎实的计算机基础;还是有经验的开发者,希望深入理解程序运行的底层机制;亦或是系统工程师、性能调优师,本书都将是您宝贵的参考资料。 阅读《深入理解计算机系统:原理、实践与优化》,您将不再满足于“知其然”,而是能够“知其所以然”。您将具备分析和解决复杂系统问题的能力,能够写出更健壮、更高效、更具可扩展性的程序,真正成为一名出色的软件工程师。

作者简介

邓志,1977年生于广东,在银行工作十余年,现自由职业者。对计算机有一股热情和蛮劲,善于思考,特别喜欢琢磨底层架构。熟悉C语言,并且精通x86/x64平台的汇编语言与机器指令系统,能用汇编写简易的OS核心。

目录信息

第一篇 x86基础
第1章 数与数据类型 2
1.1 数 2
1.1.1 数字 2
1.1.2 二进制数 3
1.1.3 二进制数的排列 3
1.1.4 十六进制数 5
1.1.5 八进制数与十进制数 5
1.2 数据类型 6
1.2.1 integer数 6
1.2.2 floating-point数 9
1.2.3 real number(实数)与NaN(not a number) 11
1.2.4 unsupported编码值 14
1.2.5 浮点数精度的转换 15
1.2.6 浮点数的溢出 17
1.2.7 BCD码 20
1.2.8 SIMD数据 21
第2章 x86/x64编程基础 23
2.1 选择编译器 23
2.2 机器语言 24
2.3 Hello world 25
2.3.1 使用寄存器传递参数 26
2.3.2 调用过程 27
2.3.3 定义变量 27
2.4 16位编程、32位编程,以及64位编程 28
2.4.1 通用寄存器 28
2.4.2 操作数大小 30
2.4.3 64位模式下的内存地址 30
2.4.4 内存寻址模式 31
2.4.5 内存寻址范围 34
2.4.6 使用的指令限制 34
2.5 编程基础 34
2.5.1 操作数寻址 35
2.5.2 传送数据指令 39
2.5.3 位操作指令 45
2.5.4 算术指令 47
2.5.5 CALL与RET指令 48
2.5.6 跳转指令 48
2.6 编辑与编译、运行 48
第3章 编写本书的实验例子 50
3.1 实验的运行环境 50
3.2 生成空白的映像文件 52
3.2.1 使用nasm编译器生成 52
3.2.2 使用bximage工具 52
3.3 设置bochs配置文件 53
3.4 源代码的基本结构 54
3.5 编译源代码 55
3.6 映像文件内的组织 55
3.7 使用merge工具 56
3.7.1 merge的配置文件 57
3.7.2 执行merge命令 57
3.8 使用U盘启动真实机器 58
3.8.1 使用merge工具写U盘 58
3.8.2 使用hex编辑软件写U盘 59
3.9 编写boot代码 60
3.9.1 LBA转换为CHS 62
3.9.2 测试是否支持int 13h扩展功能 63
3.9.3 使用int 13h扩展读磁盘 64
3.9.4 最后看看load_module() 64
3.10 总结 66
第4章 处理器的身份 67
4.1 测试是否支持CPUID指令 67
4.2 CPUID指令的术语及表达 68
4.3 基本信息与扩展信息 68
4.4 处理器的型号(family,model与stepping) 72
4.5 最大的物理地址和线性地址 73
4.6 处理器扩展状态信息 74
4.6.1 探测Processor Extended State子叶 75
4.6.2 Processor Extended State子叶所需内存size 76
4.6.3 Processor Extended State的保存 77
4.6.4 Processor Extended State的恢复 78
4.7 处理器的特性 78
4.8 处理器的Cache与TLB信息 80
4.9 MONITOR/MWAIT信息 83
4.10 处理器的long mode 84
第5章 了解Flags 85
5.1 Eflags中的状态标志位 86
5.1.1 signed数的运算 86
5.1.2 unsigned数的运算 89
5.2 IOPL标志位 90
5.3 TF标志与RF标志 93
5.4 NT标志 95
5.5 AC标志 96
5.6 VM标志 98
5.7 eflags寄存器的其他事项 99
第6章 处理器的控制寄存器 101
6.1 CR8 102
6.2 CR3 103
6.3 CR0 104
6.3.1 保护模式位PE 104
6.3.2 x87 FPU单元的执行环境 104
6.3.3 CR0.PG控制位 108
6.3.4 CR0.CD与CR0.NW控制位 108
6.3.5 CR0.WP控制位 110
6.3.6 CR0.AM控制位 110
6.4 CR4 110
6.4.1 CR4.TSD与CR4.PCE控制位 110
6.4.2 CR4.DE与CR4.MCD控制位 111
6.4.3 CR4.OSFXSR控制位 111
6.4.4 CR4.VMXE与CR4.SMXE控制位 111
6.4.5 CR4.PCIDE与CR4.SMEP控制位 112
6.4.6 CR4.OSXSAVE控制位 113
6.4.7 CR4中关于页的控制位 113
6.5 EFER扩展功能寄存器 114
第7章 MSR 116
7.1 MSR的使用 116
7.2 MTRR 117
7.2.1 Fixed-range区域的映射 118
7.2.2 MTRR的功能寄存器 120
7.3 MSR中对特殊指令的支持 124
7.3.1 支持sysenter/sysexit指令的MSR 125
7.3.2 支持syscall/sysret指令的MSR 126
7.3.3 支持swapgs指令的MSR 127
7.3.4 支持monitor/mwait指令的MSR 128
7.4 提供processor feature管理 129
7.5 其他未列出来的MSR 129
7.6 关于MSR一些后续说明 129
第二篇 处理器的工作模式
第8章 实地址模式 132
8.1 真实的地址 132
8.2 real mode的编址 132
8.3 real mode的状态 133
8.4 段基址的计算 134
8.5 第1条执行的指令 134
8.6 实模式下的执行环境 135
8.7 实模式下的IVT 135
8.8 突破64K段限 136
8.9 A20地址线 137
第9章 SMM系统管理模式探索 138
9.1 进入SMM 138
9.2 SMM的运行环境 141
9.2.1 SMRAM区域 141
9.2.2 SMM执行环境的初始化 143
9.2.3 SMM下的operand与address 144
9.2.4 SMM下的CS与EIP 144
9.2.5 SMM下的SS与ESP 145
9.3 SMM里的中断 145
9.4 SMI的Back-to-Back响应 147
9.5 SMM里开启保护模式 147
9.6 SMM的版本 148
9.7 I/O指令的重启及Halt重启 151
9.8 SMM的退出 152
9.9 SMBASE的重定位 153
9.10 SMI处理程序的初始化 154
9.11 SMM的安全 156
9.11.1 芯片组的控制 156
9.11.2 处理器对SMRAM空间的限制 158
9.11.3 cache的限制 160
9.12 测试SMI处理程序 161
第10章 x86/x64保护模式体系(上) 163
10.1 x86/x64的权限 164
10.2 保护模式下的环境 164
10.2.1 段式管理所使用的资源 165
10.2.2 paging分页机制所使用的资源 165
10.3 物理地址的产生 166
10.4 段式管理机制 167
10.4.1 段式内存管理 168
10.4.2 段式的保护措施 168
10.5 段式管理的数据结构 169
10.5.1 Segment Selector(段选择子) 169
10.5.2 Descriptor Table(描述符表) 172
10.5.3 Segment Selector Register(段寄存器) 174
10.5.4 Segment Descriptor(段描述符) 175
10.5.5 LDT描述符与LDT 258
10.6 开启保护模式 260
10.6.1 初始化GDT 260
10.6.2 初始化IDT 262
10.6.3 切换到保护模式 263
第11章 x86/x64保护模式体系(下) 265
11.1 物理页面 265
11.1.1 处理器的最高物理地址(MAXPHYADDR) 266
11.1.2 物理页面的大小 267
11.1.3 页转换模式(Paging Mode) 268
11.2 paging机制下使用的资源 270
11.2.1 寄存器 270
11.2.2 CPUID查询leaf 270
11.2.3 寄存器的控制位 271
11.2.4 页转换表资源 272
11.3 32位paging模式(non-PAE模式) 273
11.3.1 CR3结构 274
11.3.2 32位paging模式下的PDE结构 275
11.3.3 使用32位paging 279
11.4 PAE paging模式 282
11.4.1 在Intel64下的CR3与PDPTE寄存器 283
11.4.2 在AMD64下的CR3 285
11.4.3 PAE paging模式里的PDPTE结构 286
11.4.4 PAE paging模式里的PDE结构 286
11.4.5 PAE paging模式里的PTE结构 288
11.4.6 使用和测试PAE paging模式 288
11.4.7 使用和测试Execution Disable功能 292
11.5 IA-32e paging模式 297
11.5.1 IA-32e paging模式下的CR3 299
11.5.2 IA-32e paging模式下的PML4E结构 302
11.5.3 IA-32e paging模式下的PDPTE结构 302
11.5.4 IA-32e paging模式下的PDE结构 303
11.5.5 IA-32e paging模式下的PTE结构 304
11.5.6 SMEP机制 304
11.5.7 使用IA-32e paging模式 308
11.6 TLB与Cache 314
11.6.1 TLB 315
11.6.2 Paging-Structure Cache 328
11.7 page的内存cache类型 335
11.7.1 PAT(Page Attribute Table) 335
11.7.2 PAT MSR 337
11.7.3 各级table entry的PCD及PWT标志 337
11.8 页的保护措施 338
11.8.1 访问权限位U/S的检查 338
11.8.2 读/写权限位R/W的检查 339
11.8.3 执行权限位XD的检查 339
11.8.4 缺页保护P标志位的检查 340
11.8.5 保留位的检查 341
第12章 Long-mode 342
12.1 x64体系的设计原则 343
12.2 开启long-mode 344
12.2.1 检测处理器是否支持long-mode 344
12.2.2 EFER寄存器 345
12.2.3 进入long-mode的必要条件 346
12.3 退出long-mode 350
12.4 long-mode的执行环境 352
12.4.1 处理器模式的判断 352
12.4.2 64位模式下的段描述符 353
12.4.3 Long-mode的gate描述符 353
12.4.4 Long-mode的描述符表结构 355
12.4.5 Long-mode模式的段寄存器 356
12.4.6 Long-mode的paging机制 357
12.5 long-mode的指令环境 358
12.5.1 64位模式的操作数 358
12.5.2 64位模式下的无效指令 360
12.5.3 64位模式下的寻址模式 361
12.6 64位模式与compatibility模式编程 363
12.6.1 64位模式切换到compatibility模式 363
12.6.2 compatibility模式切换到64位模式 363
12.6.3 利用compatibility模式执行legacy的库函数 364
第三篇 调试与性能监控
第13章 断点调试 370
13.1 Single-Step单步调试模式 370
13.2 Breakpoint调试模式 371
13.3 Memory和I/O地址调试模式 372
13.3.1 断点寄存器DR0~DR3 372
13.3.2 状态寄存器DR6 372
13.3.3 控制寄存器DR7 373
13.3.4 Fault与Trap类型的debug异常 375
13.3.5 General Detect产生的#DB异常 375
13.3.6 执行断点指令产生的#DB异常 377
13.3.7 访问数据断点产生的#DB异常 386
13.3.8 访问I/O断点产生的#DB异常 390
13.3.9 任务切换时产生的Trap调试异常 392
第14章 分支记录 394
14.1 检测处理器的家族和型号 395
14.2 初识Branch Record 395
14.2.1 记录存放的地方 395
14.2.2 记录的形式 396
14.2.3 何时进行记录 396
14.3 IA32_DEBUGCTL寄存器 396
14.3.1 配置Branch trace record的存放 398
14.3.2 CPL-qualified branch record(受CPL限制的BTS) 399
14.3.3 冻结监控 400
14.4 LBR stack 402
14.4.1 FROM_IP与TO_IP寄存器 402
14.4.2 IA32_LASTBRANCH_TOS寄存器 404
14.4.3 LBR stack的使用 405
14.5 使用LBR捕捉branch trace 405
14.6 #DB异常下的LBR 419
14.7 IA-32e模式下的LBR stack 421
14.8 使用Single-step on branch功能 428
14.9 BTS(Branch Trace Store)机制 429
14.9.1 检测DS(Debug Store)是否支持 430
14.9.2 Debug store 64位格式 431
14.9.3 检测BTS(Branch Trace Store)机制是否可用 431
14.9.4 检测PEBS(Precise Event Based Sampling)机制是否可用 432
14.9.5 Debug Store存储区域 432
14.9.6 设置DS存储区域 439
14.9.7 使用环形回路BTS buffer 443
14.9.8 使BTS buffer产生DS中断 447
14.9.9 过滤BTS记录 459
14.9.10 64位模式下的BTS机制 463
第15章 性能监控 469
15.1 性能监控机制 469
15.2 Performance monitoring机制的版本 470
15.2.1 确定处理器所支持的功能 471
15.2.2 IA32_PMCx寄存器在各版本中的数量 472
15.2.3 IA32_PMCx寄存器的宽度 472
15.2.4 预定义的event 473
15.3 Nehalem架构下的性能监控机制 474
15.3.1 物理资源 474
15.3.2 counter(计数器) 475
15.3.3 开启计数器 476
15.3.4 全局控制器 476
15.3.5 通用计数控制器 477
15.3.6 固定用途计数控制器 478
15.3.7 全局状态寄存器 480
15.3.8 全局溢出控制器 481
15.3.9 使用Performance monitoring的例子 481
15.3.10 在PMI中冻结计数器 486
15.4 PEBS(Precise Event Based Sampling)机制 489
15.4.1 PEBS buffer 490
15.4.2 PEBS中断 493
15.4.3 PEBS事件 496
15.4.4 PEBS的触发 497
15.4.5 PEBS记录的报告 498
15.4.6 PEBS buffer满时中断 504
15.4.7 多个PMI触发 510
15.4.8 Load latency监控机制 521
15.5 使用Fixed计数器 525
15.6 Time-stamp counter与clock 528
15.6.1 Invariant TSC 529
15.6.2 读取TSC值 530
15.6.3 Clock per instruction 531
第四篇 中断体系
第16章 中断与异常处理 538
16.1 Interrupt Source(中断源) 539
16.1.1 硬件中断 539
16.1.2 软件中断 540
16.2 Exception Source(异常源) 540
16.3 Exception的恢复 541
16.4 中断vector 544
16.5 中断的屏蔽 545
16.5.1 可屏蔽的中断 545
16.5.2 不可屏蔽的中断 547
16.6 IDTR寄存器 548
16.7 IVT(Interrupt Vector Table) 549
16.8 IDT(Interrupt Descriptor Table) 550
16.9 gate描述符 551
16.9.1 legacy保护模式下的Interrupt-gate与Trap-gate描述符 551
16.9.2 IA-32e模式下的Interrupt-gate与Trap-gate描述符 552
16.9.3 Task-gate描述符 552
16.10 软件上的中断/异常处理流程 553
16.10.1 处理器对gate描述符和code描述符的检查 553
16.10.2 权限的检查 556
16.10.3 权限处理的三种情形 557
16.10.4 第1种情形:同级调用 558
16.10.5 第2种情形:权限及stack的切换 559
16.10.6 第3种情形:conforming代码段 566
16.10.7 Eflags标志位的处理 567
16.10.8 执行中断/异常处理程序 567
16.11 中断/异常调用中的任务切换 567
16.12 中断/异常调用返回 568
16.12.1 返回时的任务切换 568
16.12.2 IRET指令的operand size 568
16.12.3 IRET指令返回前的检查 571
16.12.4 返回到低权限级别时 573
16.12.5 同级返回 578
16.13 错误码 579
第17章 8259中断控制器 582
17.1 8259结构 583
17.1.1 IRQ的优先级 584
17.1.2 中断请求状态 584
17.1.3 中断服务状态 584
17.1.4 中断屏蔽状态 585
17.1.5 中断响应过程 586
17.2 8259编程 587
17.2.1 8259寄存器I/O地址 587
17.2.2 8259初始化 588
17.2.3 8259的操作字 592
17.2.4 设置edge和level触发模式 596
第18章 Local APIC体系 597
18.1 APIC体系概述 597
18.1.1 local APIC接收到的中断源 598
18.1.2 APIC体系的版本 600
18.2 使用local APIC 600
18.2.1 检测local APIC版本 600
18.2.2 开启和关闭local APIC 601
18.3 local APIC寄存器 604
18.3.1 local APIC寄存器地址 604
18.3.2 local APIC寄存器列表 606
18.4 local APIC ID 609
18.4.1 local APIC ID寄存器 609
18.4.2 APIC ID在multi-threading处理器下 610
18.4.3 multi-threading技术的使用 617
18.4.4 multi-threading处理器编程 627
18.5 local APIC版本寄存器 633
18.6 LVT寄存器 634
18.7 ICR(Interrupt Command Register) 635
18.8 LVT寄存器及ICR的设置 636
18.8.1 delivery mode的设置 636
18.8.2 trigger模式的设置 637
18.9 中断vector及priority 637
18.9.1 local interrupt的vector设置 637
18.9.2 有效的vector值 638
18.9.3 local interrupt的优先级 638
18.9.4 在64位模式下的优先级 640
18.10 处理器的IPI机制 641
18.10.1 IPI消息对象 641
18.10.2 使用physical目标模式 641
18.10.3 使用logical目标模式 645
18.10.4 多处理器的初始化与编程 648
18.11 local APIC的中断处理 659
18.11.1 检查目标 660
18.11.2 IRR和ISR仲裁 661
18.11.3 发送EOI命令 663
18.12 APIC timer 663
18.13 错误处理 666
18.14 LINT0与LINT1 669
18.14.1 LINT0与LINT1寄存器 670
18.14.2 从LINT0屏蔽外部中断请求 672
18.14.3 从LINT1屏蔽NMI 673
18.15 Performance Monitoring 675
第19章 I/O APIC 679
19.1 I/O APIC寄存器 680
19.1.1 direct register(直接寄存器) 680
19.1.2 indirect register(间接寄存器) 682
19.1.3 I/O APIC的IRQ 684
19.1.4 I/O APIC的中断处理 685
19.2 使用HPET(高精度定时器) 688
19.2.1 HPET寄存器基址 688
19.2.2 HPET的工作原理 689
第五篇 浮点与SIMD指令环境
第20章 x87 FPU单元与MMX技术 698
20.1 x87 FPU执行环境 699
20.1.1 x87 FPU 数据寄存器 700
20.1.2 x87 FPU的stack结构 701
20.1.3 x87 FPU状态寄存器 710
20.2 x87 FPU的异常 718
20.2.1 status寄存器的异常标志位 719
20.2.2 异常的屏蔽 720
20.2.3 #IS与#IA异常 720
20.2.4 #D异常 722
20.2.5 #Z异常 723
20.2.6 #O与#U异常 723
20.2.7 舍入 727
20.3 x87 FPU的异常处理机制 729
20.3.1 默认处理方法 730
20.3.2 unmasked下的异常 732
20.3.3 使用native模式 732
20.3.4 使用DOS compatibility模式 739
20.4 MMX指令环境 742
20.4.1 MMX寄存器 742
20.4.2 64位SIMD整数运算 743
20.4.3 MMX指令的比较操作 746
20.4.4 MMX指令的unpack操作 746
20.4.5 x87 FPU与MMX混合编程 747
20.5 x87 FPU与MMX的状态 748
20.5.1 x87 FPU环境信息的保存 748
20.5.2 使用FSAVE/FNSAVE指令 749
20.5.3 MMX寄存器的保存 750
20.6 x87 FPU与MMX环境的设置 750
20.6.1 为任务切换设置环境 751
20.6.2 x87 FPU与MMX环境的推荐设置 758
第21章 SSE系列指令环境 759
21.1 处理器的资源 760
21.1.1 处理器对SSE指令的支持 761
21.1.2 128位的XMM寄存器 762
21.1.3 MXCSR 762
21.1.4 SIMD数据类型 765
21.2 SSE系列指令的异常 765
21.2.1 异常的屏蔽 766
21.2.2 numeric异常的处理 769
21.3 SSE系列指令的操作 771
21.3.1 packed数据的运算 772
21.3.2 scalar数据的运算 772
21.3.3 Horizontal的运算 773
21.3.4 MOV与load/store操作 773
21.3.5 shuffle操作 774
21.3.6 unpack操作 777
21.3.7 blend操作 777
21.3.8 insert操作 778
21.3.9 extract操作 780
21.3.10 compare操作 781
21.3.11 logical操作 783
21.3.12 convert操作 785
21.3.13 string处理指令 788
21.4 SSE系列指令操作环境 800
21.4.1 SSE系列指令支持 800
21.4.2 SSE系列指令State信息 801
21.4.3 SSE系列指令环境的设置 805
21.4.4 x87 FPU/MMX与SSE环境的延时切换 807
附录A 参考资料 808
附录B 实验清单 809
· · · · · · (收起)

读后感

评分

评分

评分

评分

评分

用户评价

评分

说实话,我一直对计算机底层的东西有点畏惧,觉得那些汇编语言、内存地址什么的太高深了。但每次看到有人能写出那种“神乎其技”的代码,瞬间提升程序性能,就觉得特别羡慕。这本书的名字,“x86/x64体系探索及编程”,听起来就很硬核,但又带点神秘感。我希望这本书能像一位经验丰富的向导,把我带入计算机体系的奇妙世界。我期待它能用一种相对易懂的方式,从最基础的CPU结构讲起,比如各种寄存器是干什么用的,数据在内存中是如何组织的。然后,再慢慢引出x86和x64指令集,让我明白不同的指令是如何操作数据的,以及它们之间的区别。我最关心的是,“编程”这部分的内容,我希望它能提供一些实际的例子,展示如何用C/C++结合汇编来解决一些实际问题,比如编写性能关键的代码段,或者理解一些复杂的库函数是如何实现的。如果它能帮我理解一些调试工具的工作原理,比如如何通过反汇编来分析程序行为,那就更好了。总之,我希望这本书能降低我对底层编程的门槛,让我不再那么害怕,而是能从中找到乐趣,甚至激发出我的创造力,去尝试编写一些更有挑战性的程序。

评分

我对计算机系统的工作原理一直充满好奇,尤其是CPU内部是如何处理指令的。这本书的名字,“x86/x64体系探索及编程”,听起来非常契合我的兴趣。我希望它能帮助我从一个宏观的视角,深入理解x86和x64这两种主流架构的演进过程以及它们的核心设计思想。我期待这本书能够详尽地介绍各种CPU指令,并解释它们的功能和使用场景。更重要的是,我希望它能通过丰富的实例,展示如何在高级语言编程中,恰当地利用这些底层指令来优化程序的性能。比如,书中是否会涉及到如何进行函数调用约定、栈帧管理、内存对齐等方面的知识?这些对于理解程序运行的细节至关重要。我非常想知道,x64架构在内存寻址能力、寄存器数量等方面相比x86有何优势,以及这些优势在实际编程中是如何体现出来的。如果这本书还能介绍一些底层的安全机制,比如NX位(No-Execute bit)或者ASLR(Address Space Layout Randomization)的工作原理,那就更完美了。总之,我希望这本书能为我打开一扇通往计算机底层世界的大门,让我能够更全面、更深入地理解计算机的运行机制。

评分

我最近在琢磨如何写出更高效的C++代码,尤其是在性能敏感的场景下。很多时候,即使算法最优,代码的执行效率也可能受到底层架构的限制。这本书的名字“x86/x64体系探索及编程”一下子就击中了我这个痛点。我之前也看过一些关于汇编的入门资料,但总觉得零散,缺乏一个系统性的框架。这本书的“探索”二字,让我觉得它可能不仅仅是罗列指令,而是会深入剖析x86和x64架构的设计哲学,以及这些设计是如何体现在指令集上的。我特别想知道,x64架构相比x86,究竟在哪些方面进行了改进,带来了多大的性能提升,以及这些改进是如何影响我们编写和编译代码的。我猜这本书可能会花不少篇幅讲解各种寻址模式,以及它们在实际编程中的应用。我还好奇,它会不会涉及一些现代CPU的特性,比如流水线、缓存、分支预测等,以及如何通过编程来更好地利用这些特性。如果它能提供一些具体的代码示例,展示如何利用汇编语言进行性能优化,那就太棒了。我期待这本书能让我对计算机的执行过程有更深入的理解,从而写出更优化的程序。那种能够直接操控硬件,让程序跑得飞快的成就感,是我一直追求的。

评分

这本书的名字倒是挺吸引人的,尤其是“x86/x64体系探索及编程”。我最近对计算机底层的东西特别感兴趣,总觉得要深入理解软件的运行,就得搞明白它跑在哪个“地基”上。这本书的标题直接点出了这个核心,让我觉得它应该是一本能带我走进CPU世界,解开那些神秘指令的面纱的宝典。我一直在想,为什么同一个程序在不同的系统上表现会有细微差别,为什么有时候优化一下汇编代码就能带来惊人的性能提升。这些问题,这本书的名字似乎都在暗示着它会有解答。而且,“探索”这个词很到位,它不是那种枯燥的字典式讲解,更像是一种循序渐进的带领,让我自己去发现其中的奥秘,去感受计算机硬件的精妙之处。我特别期待它能讲清楚x86和x64架构之间究竟有哪些根本性的区别,它们又是如何影响到我们编写的程序的。还有“编程”二字,这说明这本书不仅仅是理论讲解,更重要的是结合实际操作,让我能亲手去实践,去验证书中的知识点。想想能够直接跟CPU对话,那将是多么令人兴奋的体验啊!我希望这本书能够从最基础的概念讲起,比如寄存器、内存模型,然后逐步深入到指令集、寻址方式,甚至是操作系统如何调度这些指令。它应该能让我明白,那些我们每天都在使用的软件,背后是如何利用这些底层特性来高效运转的。

评分

近期工作中,我遇到了一些难以解释的性能瓶颈,感觉像是卡在了某个硬件层面的问题上,但又找不到根源。偶然看到这本书的名字——“x86/x64体系探索及编程”,感觉这可能正是我需要的。我一直觉得,要真正理解软件的运行效率,光靠高级语言层面的优化是远远不够的,必须深入到CPU的指令层面去。这本书的“探索”二字,让我对它抱有很大的期望,希望它能带我揭开x86和x64架构的神秘面纱,理解它们的设计理念以及指令集背后的逻辑。我猜它会详细讲解一些基础概念,比如如何理解CPU的时钟周期、指令流水线、缓存机制,以及这些机制如何影响程序的执行速度。我尤其想知道,x64架构相比x86,在指令集、寻址能力、寄存器数量等方面究竟有哪些关键性的改进,以及这些改进是如何体现在实际编程中的。如果这本书能提供一些关于如何利用这些底层特性进行性能调优的技巧和案例,那就太有价值了。我期待它能帮助我写出更精炼、更高效的代码,从而彻底解决我目前遇到的性能难题。

评分

工具书

评分

不太推荐,还是阅读Intel的官方开发文档比较好,虽然是英文,内容还很多,实在看不下去又想深入学习计算机体系的,先看看这个也无妨。

评分

除了英特尔自己的手册外,目前看到讲得最清楚的x86 CPU书籍,而且还是中文的。

评分

不太推荐,还是阅读Intel的官方开发文档比较好,虽然是英文,内容还很多,实在看不下去又想深入学习计算机体系的,先看看这个也无妨。

评分

讲的很全面的,但是可能是我自己太水,只看了一部分..有点难懂..

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 book.wenda123.org All Rights Reserved. 图书目录大全 版权所有