x86/x64体系探索及编程

当前位置:首页 > 计算机网络 > 计算机理论 > x86/x64体系探索及编程

出版社:电子工业出版社
出版日期:2012-10-1
ISBN:9787121181764
作者:邓志
页数:813页

作者简介

本书是对Intel手册所述处理器架构的探索和论证。全书共五大部分,从多个方面对处理器架构相关的知识进行了梳理介绍。书中每个章节都有相应的测试实验,所运行的实验例子都可以在真实的机器上执行。
通过阅读本书,读者应能培养自己动手实验的能力。如果再有一些OS方面的相关知识,基本上就可以写出自己简易的OS核心。
本书适合有一定的x86基础知识,且对了解处理器架构及编程感兴趣的读者阅读。

书籍目录

第一篇  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体系探索及编程》是对x86处理器介绍得最详尽又最具实践指导意义的一本书。

内容概要

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

媒体关注与评论

在学习x86汇编语言的过程中,总会遇到这样一种情况:基础的指令和架构已经学完,驱动或者应用也会开发了,但想要再进一步发掘处理器的新增指令集以及新特征,却发现参考资料只有Intel的指令手册,每条指令寥寥数语的说明文字对于了解复杂的新特征根本是杯水车薪。现在,本书以详尽的示例带领读者探索这部分内容,全面深入地为读者展现了x86处理器的高级特征。罗云彬畅销书《琢石成器——Windows环境下32位汇编语言程序设计》作者这本书真正是让我眼前一亮。到目前为止,这是我见过的对x86处理器介绍得最详尽又最具实践指导意义的书。我如果学习的话,一定会选择这本书。很显然,在实践中解决困难,应用所学知识的乐趣,是任何高大全的课程所无法比拟的。如果耐心地将这本书上的内容读过,将作者提供的例子一一运行过,我相信对x86处理器的知识,必定会了然于胸。谭文 畅销书《天书夜读——从汇编语言到 Windows 内核编程》 《寒江独钓——Windows 内核安全编程》作者

名人推荐

在学习x86汇编语言的过程中,总会遇到这样一种情况:基础的指令和架构已经学完,驱动或者应用也会开发了,但想要再进一步发掘处理器的新增指令集以及新特征,却发现参考资料只有Intel的指令手册,每条指令寥寥数语的说明文字对于了解复杂的新特征根本是杯水车薪。现在,本书以详尽的示例带领读者探索这部分内容,全面深入地为读者展现了x86处理器的高级特征。 ——罗云彬,畅销书《琢石成哭—Windows环境下32位汇编语言程序设计》作者 这本书真正是让我眼前一亮。到目前为止,这是我见过的对x86处理器介绍得最详尽又最具实践指导意义的书。我如果学习的话,一定会选择这本书。很显然,在实践中解决困难,应用所学知识的乐趣,是任何高大全的课程所无法比拟的。如果耐心地将这本书上的内容读过,将作者提供的例子一一运行过,我相信对x86处理器的知识,必定会了然于胸。 ——谭文,畅销书《天书夜读—从汇编语言到Windows内核编程》《寒江独钓—Wondows内核安全编程》作者

章节摘录

版权页:   插图:   ③在IA-32e paging模式下,但CR4.PCIDE=0,即未开启PCID功能时,使用默认的PCID值。 默认的PCID值为000H,因此在上述情况下,处理器只维护000H编号的TLB和paging-structure cache,实际效果等同于在legacy处理器上未实现PCID功能。 更新PCID值 当执行mov CR3,reg64指令对CR3进行刷新时,TLB和paging-structure cache的失效依赖于CR3 (63)位,如下面的代码所示。 mov rax, PML4T_BASE | 0×1;PCID=01值 mov cr3, rax;更新CR3 这个代码是在CR4.PCIDE=1的前提下,使用了PCID值为1去更新CR3,并且CR3(63)=0,表明需要更新TLB及paging-structure cahce,那么这时候指令对TLB和paging-structure cache有下面几方面的情形。 ①使原来PCID为001H编号的TLB无效,即刷新TLB。 ②使原来PCID为001H编号的paging-structure cache无效,即刷新paging-structure cache。 ③对global page无影响,不会刷新global page。 ④对其他PCID编号的TLB和paging-structure cache无影响,不会刷新其他PCID编号的TLB和paging-structure cache内容。 因此,处理器会保留其他PCID编号的virtual address space在TLB及paging-structure cache的内容,即virtual address的page及table entry。

图书封面


 x86/x64体系探索及编程下载



发布书评

 
 


精彩短评 (总计63条)

  •     前天买的,昨天下午就拿到,还没来的及看,印的质量不错
  •     看了大家的评论后决定买的。确实不错
  •     内容零乱,不适合初学者。不能说书的内容一无是处,但是初学者看绝对一头雾水,所以不建议初学者看。
  •     草草看了一遍,內容較新鮮,不錯。可惜就是字大了點,行距寬了點,是那種沒必要的大,導致整部書比一般字典都厚。其實字可以印小一點,行距可以窄一點,那麼書也就能便宜些了。
  •     x86体系探索
  •     求
  •     挺好,,,,
  •     此书毫无用处
  •     有些地方估计是排版错误,没衔接上。比如介绍MTRR那一节。。。
  •     有点偏硬件了
  •     书很厚,内容很丰富,正在学习中
  •     书中内容非常好,介绍的很详实,找了好久都没有找到这么好的书。
  •     刚开始看,只不过翻了翻书,看着像是一本字典一样的书。
  •     作者对Intel官方文档的细致研究令人叹服,不仅是理论上介绍的很到位,对实践更是难得的分享,就是对汇编的要求比较高,要有一定的基础才能够细致的研读,只要有心,对动手实践能力确实是上一个台阶
  •     1、书写的比较实用性,对做X86的很有帮助,没有汇编和X86基础就不建议看了。2、有些东西还需要看作者自己的网站。很多Code都要在上面找。
  •     本书既可以用于学习,也可以用于参考!
  •     书还是不错的讲得很细但是对编程基础要求很高
  •     内容详尽,针对X86X64硬件架构的介绍和对BSP的编写有指导作用
  •     不错,虽有时没空,但大致看了一部分,感觉值得多看几回!
  •     有些难度,应该先有基本的硬件的知识。
  •     可能是第一版的原因,有一两个错字,但这不能掩盖内容的精彩。
  •     研究汇编的朋友来看看吧,有你想要的东东,
  •     很厚很重的一本书 深度是有 得慢慢品
  •     这本书整体看了一下,不错,很详细,但美中不足的没有提供源程序和工具,在书后面有一个网址说是能下载,我收到书试了一试,不行,乱码,估计是人登陆的多坏了,还是有别的原因,我个人觉得,100元的书了,怎么不能配个光盘把书上的例子的源代码以及相关工具弄一下,好让这本书更加完美一些,看书要想很好的理解,必须的动手,也就是调试程序,如果那个书上提供的那个网址长时间不能下载代码和工具,这本就没有太大的价值了。我个人的感觉。
  •     不建议入门级程序员读,对中高级开发人员比较有用。
  •     没想到有这么厚,整体还算可以
  •     要不是长期打5折,是不会注意到这本书的中国人写书不负责任的态度在本书一览无余随便举个例子 讲实模式那一章(好像是第8章)末尾作者都已经提到了访问1m以上的地址空间会产生wrap-around就是不愿意解释清楚 wrap-around具体是一个什么情况会不会引发eflags相应的某一位变化会不会引发异常,中断读者读到这里还要自己去探索那我要着800页的砖头干什么呢直接看intel手册算了吧 人家还免费下载呢我去做作者建的qq群提意见 还被赶出来了真是将心比心么作者扪心自问 你的读者人人都知道wrap-around这回事么要是人人都知道的常识 你又何必在书里面废话前言里面说的好好的 只要一定的汇编知识,即使不那么好就可以阅读了你真的考虑到基本的汇编知识的读者感受么入门了的看不懂 有一定基础的又觉得不够真应了一句古话 高不成低不就就这态度和水平 还打算在写一本书呢 我表示鞠躬绕道而行
  •     质量不错 但还没看
  •     对学习X86/X64的人是很有帮助的
  •     非常难得的好书,有点厚实,多些耐心,多动手,肯定有收获。
  •     这几本书都很好,尤其是《X86/X64体系探索与编程》这本书,内容相当好。
  •     快递很快,书很不错!作者对汇编的认识真是让人叹服.
  •     讲得还不错,有待好好研究
  •     了解下x64
  •     太厚了还没能开始看,不过书倒是写得比较详细,可以作为参考书来用。
  •     书已经到手,在学习中,看了几节很不错。
  •     确实很不错的书,赶紧甩掉哪些老旧的教材吧,厚厚的一大本实战意义的书,会让你受益匪浅的。
  •     说好的2号到,3号才到,而且开始一直查不到物流,不过总算在上课前刚刚到,要不然就坑死了,书不错,背面刮痕明显,书中竟然还能发现饭粒,啊啊啊啊啊,这让我情何以堪,不过用来学习还是不错的
  •     我的梦想,就是成为软硬件精通的大师
  •     比较起来,估计都是译文,类似书籍,可以看看普通汇编语言即可,不建议一般读者买。
  •     比较深入的对X86/X64的编程进行了探讨
  •     帮人买的专业书籍,之所以给5分,是因为这些书价格便宜,包装很好,快递很给力。
  •     如果你还抱着intel手册啃读的话,这本书言简意赅
  •     谁有作者的联系方式呢?邮箱什么的,有问题请教
  •     我看了一下目录,上面的东西有些是我需要的,虽然我知道是从开发者手册上找的,但是,作者肯定讲得更详细
  •     讲的很全面的,但是可能是我自己太水,只看了一部分..有点难懂..
  •     内容很详细,比看intel手册轻松一点
  •     很厚实,很全面,很详细
  •     学汇编也可以用这书来
  •     书很厚,内容丰富,基本上就是中文版intel手册,当然不止手册的功能,还有非常多的例子,我也正在看,总体感觉不错
  •     字号大,行间距宽。。。。其实可以薄不少的。当然书的内容还是很不错
  •     很不错,很厚
  •     对整个cpu处理指令有了初步认识后,需要了解x86体系结构,本书由浅入深的介绍了x86指令。
  •     书很值得够买!!!下次还来!!
  •     此书对学习x86体系的系统编程非常有帮助。Intel/Amd手册是参考性的,各个特性都介绍了,但想使用时有时会感到无从下手。而此书有深入的讲解及丰富的示例,使我学到怎样有效的使用这些特性,有效地弥补了官方手册的不足。 缺点:“10.5.4段描述符”足足有83页。建议细分该节。
  •     的确,我都不敢看,我告诉你,讲的着的不错,我认为作为深入研究X86平台有非常良好的教学!真棒!
  •     很一般的书,内容很杂,没有重点,当参考书用都参考不了
  •     这边书挺不错的,值得购买收藏
  •     讲解很深入、详细,示例很多。
  •     一直想了解一下的东西,不过真心没肯下来,但是从整体讲,了解了很多关于系统架构的理解,对于计算机更进一步,算是提高自己知识面吧!!!
  •     如果你喜欢汇编,你可以来看看如果你想通透C,你可以来看看如果你想做的操作系统,那就再合适不过了
  •     不错,内容很全面,可以当做参考书。
  •     想研究cpu的强烈推荐,真的是好书,中文中第一
 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024